ラップアラウンド現象
/* wrap-around.c */ #include <stdio.h> /* この動作をなにがあっても一生忘れないように、 * 1日数回実行して、通算千回ほどは眺めること。 */ main() { signed char sc = 100; unsigned char uc = 100; int i; for (i = 0; i < 200; i++) { printf("%03d:%4d %4d\n", i, sc++, uc++); } }
/* add.c */ #include <stdio.h> /* 足し算してみよう 200 + 200 */ main() { signed char sc = 200; /* コンパイラは何と言うだろう? */ unsigned char uc = 200; signed char a = sc + uc; printf("%d + %d = %d\n", sc, uc, a); /* こういう中間での宣言ができない処理系もある */ unsigned char b = sc + uc; printf("%d + %d = %d\n", sc, uc, b); }