萌新想问一下关于char补码的devC++中一个C语言的小问题?

图一中结果是+128,图二结果是-128。我本来以为是得再多”c=c+1“一步,结果我又尝试图三,图三结果是0.想问问这三种情况为啥补码情况不一样?

图一中:
char c = 127;
printf("%d", c+1);
在C语言中的整数常量是以整形int进行存储的,这里127和1就是这种情况;另外在运算过程中如果两个运算数不是同种类型,编译器会把精度较低的数转换为精度较高的数,所以c+1是char+int会转化为int+int即127+1=128结果也是int。

图二中:
c=c+1;
c+1=128但是赋值给char c要进行转换128转为char就是-128,所以最后输出-128。

图三中:
首先c=255转为有符号的char那么c实际等于-1。那么c+1就等于0,最后结果输出0。
温馨提示:答案为网友推荐,仅供参考
相似回答