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

作者&投稿:盍谭 (若有异议请与网页底部的电邮联系)
~ 图一中:
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。

萌新想问一下关于char补码的devC++中一个C语言的小问题?
答:在C语言中的整数常量是以整形int进行存储的,这里127和1就是这种情况;另外在运算过程中如果两个运算数不是同种类型,编译器会把精度较低的数转换为精度较高的数,所以c+1是char+int会转化为int+int即127+1=128结果也是int。图二中:c=c+1;c+1=128但是赋值给char c要进行转换128转为char就是...