char a=127; a+=1; printf("%d",a); 结果是多少?我真的醉了 char a=0x123FFF; printf("%d,",...
char a=127, printf("%d", a+1);\u7ed3\u679c\u662f\u591a\u5c11\uff1f%d\u662fASCLL\u7801\u6570\uff0ca\u7684ASCLL\u7801\u6392\u5e8f\u662f127 \uff0c127+1=128 \u6240\u4ee5\u7ed3\u679c\u662f128
0x123fff\u662f\u5341\u8fdb\u5236\u76841196031 % 256 = 255 \u4e5f\u5c31\u662f -1 \u6240\u4ee5\uff0c\u7b2c\u4e00\u4e2a\u8f93\u51fa-1
\u7b2c\u4e8c\u4e2a\u5f88\u7b80\u5355\u4e86 \uff0c\u8f93\u51fa-128.
1\u3001\u56e0\u4e3aa\u662fchar\u7c7b\u578b\uff0c\u53d6\u503c\u8303\u56f4\u662f -128 ~ 127\uff0c0x123fff\u663e\u7136\u662f\u6ea2\u51fa\u4e86\uff0c\u4e8e\u662f\u8fdb\u884c\u53d6\u6a21\u64cd\u4f5c\uff0cchar\u7c7b\u578b\u5360\u4e00\u4e2a\u5b57\u8282\uff0c\u6240\u4ee5\u6a21\u4e3a256\uff0c\u53d6\u6a21\u540e\u5269\u4e0b255\uff0c\u56e0\u4e3achar\u7c7b\u578b\u662f\u6709\u7b26\u53f7\u6570\uff0c\u6240\u4ee5\u662f-1.
2\u3001127\u662fchar\u7c7b\u578b\u6240\u80fd\u8868\u793a\u7684\u6700\u5927\u503c\uff0c+1\u540e\u5c31\u662f-128\u4e86\uff0c\u4f60\u6309\u673a\u5668\u7801\u64cd\u4f5c\u66f4\u5bb9\u6613\u770b\u4e00\u4e9b\u3002\u3002
char a=127; a+=1; printf("%d",a); 结果是-128
char占一个字节的内存,属于有符号数据(无符号定义应该是unsigned char),数据范围为-128~127.
char类型存储的是字符的ascii,属于整数类型的一种。
计算机存储整形数据用的是补码,补码不区分正负。
127 在计算机中的存储是以二进制补码存放,其二进制数据为01111111 (2^7-1)
127+1的结果为:10000000
10000000按有符号输出,就是-128. (这是使用补码的效果,其值为-128,是补码运算的结果,也可以说是一种规定)
结果是-128
扩展阅读:求解方程计算器 ... const char ... char a[10] ... varchar ... 手比出c you know i mean ... cronbachs alpha ... char a ... cos2x ... color ...