マシンが 32 ビットのリトル エンディアンであり、sizeof(int) が 4 バイトの場合。
次のプログラムがあるとします。
line1: #include<stdio.h>
line2: {
line3: int arr[3]={2,3,4};
line4: char *p;
line5: p=(char*)arr;
line6: printf("%d",*p);
line7: p=p+1;
line8: printf("%d\n",*p);
line9: return 0;
}
期待される出力は何ですか?
A
: 2 3
B
: 2 0
C
: 1 0
D
: ガベージ値
文字ポインターへの整数ポインターのキャストを悩ませていることの1つ。
キャスティングってそんなに重要?
コンパイラは 5 行目で何をしていますか? (
p = (char *) arr;
)7行目で何が起こっているのですか?(
p = p + 1
)出力が次の場合、
20
どのよう0
に印刷されていますか?