C语言的溢出问题

2024-11-20 16:46:44
推荐回答(2个)
回答1:

可以参考一下溢出问题

回答2:

首先计算机存储的方式为二进制。而几乎所有计算机都使用二进制补码法来存储n位存储单元中的有符号整数。二进制补码法中最左位表示正负,0为正,1为负。其余位为绝对值。所以8位只能存储2^7=128.,而8位(一个字节)的char最小值为-128~11111111(二进制)。最大值为127~01111111。两个绝对值加起来正好2^8=256.不信实验一下,

#include

int main(void)
{
char i = 128;
printf("%d\n",i);//输出-127;
}
#include

int main(void)
{
char i = -129;

printf("%d\n",i);//输出127;
}