e173.c

unsigned charに256は入らない


#include <stdio.h> struct tag { char buf[0x1234] ; } ; int main() { unsigned char c ; unsigned char hig ; /* 上側サイズ */ unsigned char low ; /* 下側サイズ */ c = 256 ; c = 0x100 ; printf("c = %d¥n",c) ; hig = sizeof(struct tag) >> 8 ; low = sizeof(struct tag) ; /* Review-Cうるさい */ printf("hig = %02x¥n",hig) ; printf("low = %02x¥n",low) ; /* 検出困難な問題(シフトの向きが逆) */ /* & 0xFFでReview-Cを黙らせる */ hig = sizeof(struct tag) << 8 ; low = sizeof(struct tag) & 0xFF ; printf("hig = %02x¥n",hig) ; printf("low = %02x¥n",low) ; return(0) ; }
解説 初心者の方へ: unsigned char で使用できるのは、0xff(255)までです。 なるだけ、INTを使用して下さいね。 中級者の方へ: うるさくて、すみません。 でも、たまに、 シフトの向きが逆です。