次のCコードの出力はどのようになりますか?リトルエンディアンマシンで実行されると仮定します。ここで、short intは2バイトをとり、charは1バイトをとります。私のマシンで次のCコードの出力
#include<stdio.h>
int main() {
short int c[5];
int i = 0;
for(i = 0; i < 5; i++)
c[i] = 400 + i;
char *b = (char *)c;
printf("%d", *(b+8));
return 0;
}
それは私のマシンがリトルエンディアンまたはビッグエンディアンである場合、私は知らない
-108
を与えました。私はそれが与えるべきどこかに見つけた
148
出力として。 404の下位8ビット(つまり要素c [4])は148ですが、 "%d"のために、c [4]のアドレスから開始してメモリから2バイトを読み込む必要があります。
コンパイルフラグは、デフォルトのcharをsigned/unsignedなどに変更できます。 –