【www.arisingsemi.com--IT认证】

溢出

依然要注意:{
unsigned char a=-150;
printf(“%d,”,a);
printf("%c",a);
}    //结果为 106,j  就是说输出%c时截取存储时的低八位就行。


【补充的深层理解】 例
3: {
char a=128;
printf(“%d\n”,a-3);
} //结果为 -131
解释:可以看出当以%d输出时,是
a的存储 1111 1111 1000 0000
+  1111 1111 1111 1101 (-3的补码)
=  1111 1111 0111 1101  故为 - 131
例4 :{
char a=128;
printf(“%c\n”,a-3);
} //结果为 } (125对应的符号为 })
解释:可以看出当以%c输出时,是
以a的存储低字节 1000 0000
+ 1111 1101 (-3的补码)
= 0111 0011 故为125

2:注意:一个整型类型的变量,用任何一个超过表示范围的整数初始化,得到的值为用该整数范围作模运算后的值。。

本文来源:http://www.arisingsemi.com/it/55859/