C言語なら、俺に聞け! Part 〈52〉
■ このスレッドは過去ログ倉庫に格納されています
0299デフォルトの名無しさん
NGNGunsigned int x = 1;
char *p = (char *)&x;
printf("%x %x %x %x\n", p[0], p[1], p[2], p[3]);
(2)
unsigned int x = 1;
char buf[256];
char *p = buf;
while (i < CHAR_BIT * sizeof (unsigned int)) {
*p++ = x << i++ & ~(~0U >> 1) ? '1' : '0';
if (i % CHAR_BIT == 0)
*p++ = ' ';
}
*--p = '\0';
printf("%s\n", p);
上の2種類の方法で x の値を表示させると、(1)は 1 0 0 0 、(2)は 00000000 00000000 00000000 00000001 と、
それぞれ別のバイトオーダーで表示されてしまいます。
どうしてこの様になってしまうのでしょうか?
コンパイラはgcc2.95.4です。
■ このスレッドは過去ログ倉庫に格納されています