アカウント名:
パスワード:
私はコレ
#include studio.h
#include
int main() {
return 0;
}
今年も実りはないということでよろし?
なにを#includeしたのでしょうか?ふつう考えたら、上記プログラムには#includeは不要なはずですが、消えてしまったヘッダファイルの中に、じつは、すごいプログラムが書かれていて、returnまたは0にマクロ定義されているとか。
つーか#include以前に、そもそもreturnが不要だろついでにいうとmainにいちいちint付ける必要もないしつまるところ
main(){}
で同じ動作するだろ
どうせまたアレだろ?「returnが必ず必要とか」思ってるしったか君なんだろ?返り値がint以外のmain()もあるんだろうぜ?
そのへんの Linux で試してみたが、同じ動作にはならないみたいぞだぞ。
% echo 'main(){}' | gcc -x c - % ./a.out % echo $? 100 % ./a.out 1 2 3 % echo $? 132
C99という仕様では、returnせずにmainの最後まで到達すると、return 0だとみなされます。
ご指摘ありがとうございます。不勉強をさらしてしまいました。
echo 'main(){}' | gcc -x c -std=c99 -S -o - - してみるとたしかに movl $0, %eax がはさまってるなあ。
たぶんC89もそうだったんじゃね? 歴史的経緯か何かで(K & Rの最初のサンプルを妥当にするためとか何とか)。あとreturnを省略できるとしてもmain関数だけだと思う。C11では禁止されてそうな気もするけど(いろいろ互換規定が削除されてC++同様になった)確認してない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
使用する言語によって違う (スコア:0)
私はコレ
#include studio.h
Re: (スコア:0)
#include
int main() {
return 0;
}
今年も実りはないということでよろし?
Re: (スコア:0)
なにを#includeしたのでしょうか?
ふつう考えたら、上記プログラムには#includeは不要なはずですが、
消えてしまったヘッダファイルの中に、じつは、すごいプログラムが
書かれていて、returnまたは0にマクロ定義されているとか。
Re: (スコア:-1)
つーか#include以前に、そもそもreturnが不要だろ
ついでにいうとmainにいちいちint付ける必要もないし
つまるところ
main(){}
で同じ動作するだろ
どうせまたアレだろ?
「returnが必ず必要とか」思ってるしったか君なんだろ?
返り値がint以外のmain()もあるんだろうぜ?
Re: (スコア:1)
そのへんの Linux で試してみたが、同じ動作にはならないみたいぞだぞ。
% echo 'main(){}' | gcc -x c -
% ./a.out
% echo $?
100
% ./a.out 1 2 3
% echo $?
132
Re:使用する言語によって違う (スコア:0)
C99という仕様では、returnせずにmainの最後まで到達すると、return 0だとみなされます。
Re:使用する言語によって違う (スコア:1)
ご指摘ありがとうございます。不勉強をさらしてしまいました。
echo 'main(){}' | gcc -x c -std=c99 -S -o - - してみるとたしかに movl $0, %eax がはさまってるなあ。
Re: (スコア:0)
たぶんC89もそうだったんじゃね? 歴史的経緯か何かで(K & Rの最初のサンプルを妥当にするためとか何とか)。あとreturnを省略できるとしてもmain関数だけだと思う。
C11では禁止されてそうな気もするけど(いろいろ互換規定が削除されてC++同様になった)確認してない。