char 字符与int的转换输出

char a =258;
int d = a;
Printf("d+1 = %d\n",d+1);
输出结果:______.
输出此结果的理由:

第1个回答  2014-02-19
3
a=258 =256+2 =1 0000 0010;
a是char 溢出部分舍去。
a=2
可以用printf("%d",a);显示查看一下
d=2
d+1=3
输出:d+1=3追问

那为什么我用gcc编译会因为溢出而编译不过呢?

追答

258默认是int型,
你强制转化一下:char a=(char)258;

本回答被提问者和网友采纳
第2个回答  2014-02-22
char是最高到255,而整形的话是65536,所以258比255点多了3,那么char a显示出来就是3.那么d=3.