gccがjが初期化されていないと不平を言っていないのはなぜですか? j + = 10を削除すると、実際には不平を言います... -Wallでコンパイルします(gcc 4.9と5.3でテスト済み)。GCCは初期化されていない変数について不平を言わない
int main(void)
{
int i;
int j;
int threshold = 100;
for (i = 0 ; i < 100 ; i++)
{
if (j >= threshold)
break;
j += 10; /* comment this line to enable uninitialized variable warning */
}
return 0;
}
初期化されていない、または使用されていないと訴えていますか?ところで、あなたの警告レベルは何ですか? – StoryTeller
(-Wallと一緒に使用) 警告: 'j'はこの関数では初期化されていません。-Wmaybe-uninitialized] –
このコードの警告を取得するには、 '-O1'を追加します(gcc 5.3)。最適化レベルを変更すると問題が発生しやすくなる可能性があります。 –