以下のプログラムをご覧ください。私は次のコンパイラの警告を受け取ります。「int i = 10;」を実行します。 「int i; i = 10;」私がグローバル変数であるときに異なる関数を実行しますか?
のbash-3.2 $のgcc -Wall Test1.cに Test1.cに:6:警告:6:警告: 'は宣言の中で 'INT' にタイプのデフォルトデータ定義は何種類かのストレージクラス Test1.cにしていませんj '
通常、この警告は、ランタイム操作が関数の外部に書き込まれたときにスローされます。ですから、私はなぜグローバルなスコープで "int j; j = 20"が警告をスローしますが、 "int i = 10"はスローされないのか疑問に思っていますか?
#include <stdio.h>
int i = 10;
int j;
j=20;
int
main(void)
{
int k;
k = 30;
printf("%d %d %d\n", i, j, k);
return 0;
}
警告が最後まで読みましたか? – DeiDei
@DeiDei:私は今それを見る。 "警告:型の既定値は 'j'の宣言で 'int'"は実際にj = 20が宣言であることを伝えています。ありがとう。 – NeilB