No.2ベストアンサー
- 回答日時:
プロトタイプ宣言のない関数を呼び出すと, 「int を返す」と仮定される. さらに, 「int と double で異なるレジスタを使う」という実装では
・sin が返す値は double 用のレジスタに入っている
・printf の引数に渡す値は int 用のレジスタから取り出す
ことになり, 「sin が計算した値」とは全く関係のない値が printf に渡される可能性がある.
この回答への補足
そういった、宣言しないと意図しない結果になるヘッダーは他に何がありますか?
全て上げていただけるとありがたいです。こんなことで悩むのは嫌ですから。
(エラーになるものは調べるきっかけがあるので省略してください。)
No.5
- 回答日時:
/w 警告をすべて無効にする
/wd<n> 警告 n を無効にする
/we<n> 警告 n をエラーとして扱う
/wo<n> 警告 n を 1 度だけ表示する
/w<l><n> n の警告レベル 1-4 を設定する
/W<n> 警告レベルを設定する (既定 n=1)
/Wall 警告をすべて有効にする
/WL 1 行診断を有効にする
/WX 警告をエラーとして扱う
このあたりが、警告関係。
詳細はマニュアルを参考に。
http://msdn.microsoft.com/ja-jp/library/thxezb7y …
Visual Studio のプロジェクトで設定するなら「コンパイル」に「警告レベル」という項目があって、それが上記の/W<n>に相当します。
警告毎に個別に制御できますが、最初のうちは、まとめて制御する /W4 や /Wall 等で、高めに設定するとよいでしょう。
No.4
- 回答日時:
あ, あとついで:
たぶん「未宣言の関数に対して警告を出す」オプションはあると思うから, それを
*常に*
設定しておくといい.
この回答への補足
見つかりません><
コンパイルオプションですがここに入らなかったために
http://www.eonet.ne.jp/~fhm07425/aaa.txt
にアップしました。
No.1
- 回答日時:
math.hをインクルードしなかった場合も、sinやcosの計算をしています。
ただ、その結果の解釈方法が変わってしまうのです。math.hにはsin()やcos()は「double型を返す」と宣言されています。C言語では、型の宣言がされていない関数は暗黙的にint型を返すものと見なすことになっているので、math.hをインクルードしないと結果の型を誤解してしまいます。
この回答への補足
そういった、宣言しないと意図しない結果になるヘッダーは他に何がありますか?
全て上げていただけるとありがたいです。こんなことで悩むのは嫌ですから。
(エラーになるものは調べるきっかけがあるので省略してください。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# プログラミング実行後に表示される値を答えよ #include <stdio.h> void main 4 2022/05/28 10:20
- C言語・C++・C# C++ と、 1 2022/11/07 23:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
long型の定数の末尾にLを付ける...
-
DWORDの実際の型は何でしょうか
-
構造体の要素すべてに対する四...
-
typedef enumの使い方を教えて...
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
関数の実体定義にヘッダファイ...
-
2重定義って??
-
変数の型を定義しなかった場合...
-
C言語 宣言した変数になにも代...
-
直接アドレス指定のポインタの...
-
void func( void )について
-
C言語でmain関数でのreturnとexit
-
main.c:7:43: warning: implici...
-
【#define】 defineで定義した...
-
GCCで暗黙の型変換の警告を出し...
-
不正な構造体の演算
-
引数で argc argvが使用され...
-
intとINTの違いは?
-
構造体のvectorを引数として関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
2重定義って??
-
long型の定数の末尾にLを付ける...
-
C++のfor文について
-
typedef enumの使い方を教えて...
-
関数の実体定義にヘッダファイ...
-
変数の型を定義しなかった場合...
-
ハンドルされていない例外が発...
-
C++でboolにintの値を代入する...
-
main.c:7:43: warning: implici...
-
プログラムの中で別のmainを呼...
-
【#define】 defineで定義した...
-
void func( void )について
-
構造体の要素すべてに対する四...
-
C++の(左辺値)参照を参照渡し
-
構造体の宣言でエラーが出ます。
-
main()とint main(void)の違い
-
intとINTの違いは?
-
エラー「invalid conversion fr...
おすすめ情報