没什麽特别的意思,就是测试一下用字符输出和ASCII码输出的区别,已经char型溢出后的效果
printf("%d\n",c+1);会输出字符'2'的ASCII码,就是50
printf("%c\n",c+1)会输出字符'2'
printf("%c\n",d);会输出一个乱码,因为128是不可见字符
printf("%d\n",d)会输出-128,因为128对于char型来说越界了,会输出d-256这个值
就是char类型其实对应的是ascii码。详细过程如下:
char c,d;
c = '1';
d = 128;
printf("%d\n",c+1); //结果:50。对应'1'的ascii码
printf("%c\n",c+1); //结果:2。字符1的ascii码,加1后转char,实际就是'2'
printf("%c\n",d); //结果:乱码。0-127 ,128没有对应的字符,所以显示乱码
printf("%d\n",d); //结果:-128。范围是-128-127,128超出范围。01111111是127的二进制。127+1=128,二进制为11111111,
//左边第一个1是符号位,表示负数,那么正好是-128