09/01/25 05:16:05
>>27
cに代入した値は、何か別の場所で使ってる?
34:デフォルトの名無しさん
09/01/25 07:55:48
ヘッダーファイルをインクルードせずにコンパイルおよび実行できてしまったのですが
これは何でですか?
具体的には
int main(void)
{
printf("%f\n", sqrt(3));
return 0;
}
です。
stdio.h math.h をインクルードしないとエラーが出ると思ったのですが・・・
環境は cygwin gcc 3.4.4です。
コンパイルオプションなどは特に設定してません。
35:デフォルトの名無しさん
09/01/25 08:27:22
どのエラーを期待してるのかわからないが、-Wall をつければ
いくつか警告がでるはず。
一般的に必須なのは math.h
sqrt() の返り値が double であると宣言する必要がある。
ただし、gccはprintfのフォーマット演算子の解析しているので、
"%f"から double を類推できて、問題なく動いているのだと思う。
36:34
09/01/25 09:14:06
>>35
数年の記憶ではエラーが出たような気がして。
-Wall試してみました。警告出てきました。
ですが、エラーにならないならインクルードする必要がないってことになってしまいませんか?
それとも、このエラーにならないってのはgccの仕様であって、
C89やC99では認められてなかったりするのでしょうか?
37:デフォルトの名無しさん
09/01/25 09:15:15
数年前の記憶では
です。