Cでは、宣言された同じステートメントで変数を使用できますか?同じステートメントで変数を宣言して使用する
次のプログラムがエラーなしでコンパイルされ、実行され、GCC 4.9と打ち鳴らす3.5の両方において:
#include "stdio.h"
int main() {
int x = x;
printf("%d\n", x);
}
GCCにおいては0
と打ち鳴らす32767
に出力する(最大の正の2バイトの整数値です)。
なぜこれでコンパイルエラーは発生しませんか?これは特定のC仕様で有効ですか?その動作は明示的に未定義ですか?
MSVCでは、「警告C4700:初期化されていないローカル変数 'x'が使用されました」を出力します。愚かな質問をする前に、コンパイラの警告を有効にしてください。 –
@WeatherVane:コンパイラが警告を出しても、それが有効かどうかはわかりません。 –
MSVCは実行時に '-1373317485'を出力します。まあ、いろいろな値。 –