このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

英語がわからんが How much? その2

クイズ: 実行前にいくつになるか予想せよ。


/* and haw much? */
#include

int main()
{
unsigned char u = UCHAR_MAX;
signed char c = CHAR_MAX;
unsigned char u2 = c;
signed char c2 = u;
u += 2;
c += 2;
u2 += 2;
c2 += 2;

printf("u = %d, c = %d\n", u, c);
printf("u2 = %d, c2 = %d\n", u2, c2);
}


これも、実行前に表示(出力)を予想せよ。


#include

/* 警告(Warning)が出るが、エラーではないのでコンパイルはできる。*/

int main()
{
char c = CHAR_MAX;
unsigned char uc = UCHAR_MAX;
int i = INT_MAX;
unsigned int ui = UINT_MAX;

c += 2;
uc += 2;
i += 2;
ui += 2;

printf("(1 :c - d) %d\n", c);
printf("(2 :c - u) %u\n", c);

printf("(3 :uc - d) %d\n", uc);
printf("(4 :uc - u) %u\n", uc);

printf("(5 :C - d) %d\n", CHAR_MAX + 2);
printf("(6 :C - u) %u\n", CHAR_MAX + 2);

printf("(7 :UC - d) %d\n", UCHAR_MAX + 2);
printf("(8 :UC - u) %u\n", UCHAR_MAX + 2);

printf("(9 :i - d) %d\n", i);
printf("(10:i - u) %u\n", i);

printf("(11:ui - d) %d\n", ui);
printf("(12:ui - u) %u\n", ui);

printf("(13:I - d) %d\n", INT_MAX + 2);
printf("(14:I - u) %u\n", INT_MAX + 2);

printf("(15:UI - d) %d\n", UINT_MAX + 2);
printf("(16:UI - u) %u\n", UINT_MAX + 2);
}