2017-07-21 23 views
0

union testという宣言を含めると、以下のコードのforループが実行されないのはなぜですか?私はclangコンパイラを使用しています。共用体が宣言されているとループが表示されない

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

union test{ 
    int intv; 
    float floatv; 
}; 

int main(){ 
    union test test1; // When this is removed the below loop displays. 

    for(int i, j = 0; i < 5; i++, j = (j + i) * 2){ 
     printf("%d %d\n", i, j); 
    } 

    return 0; 
} 
+1

'i'は初期化されていません – yano

+0

オススメとして閉じるように投票しています。 – HolyBlackCat

+0

私はそれをtypoと呼んでいません。クレブランとヤノは正しいです。その未定義の振る舞い。私は他の言語のように、両方の変数がゼロで初期化されないことを認識していませんでした。 – AppTest

答えて

3

これは未定義の動作です。 iは初期化されていません。

+0

@Olaf心配はありません! – yano