这个程序是什么意思?

img

没什麽特别的意思,就是测试一下用字符输出和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-127128超出范围。01111111127的二进制。127+1=128,二进制为11111111,
    //左边第一个1是符号位,表示负数,那么正好是-128