无符号整形:
int main()
{
unsigned char a = 0xff;
unsigned char b = 0xff + 1;
unsigned char c = b - a;
printf("%d %d %d\n", a, b, c);
}
结果:255 0 1。可见无符号整形溢出,不影响c=b-a的实际意义。
有符号整形:
C的规范定义是“undefined behavior”,也就是不一定是什么结果。
无符号整形:
int main()
{
unsigned char a = 0xff;
unsigned char b = 0xff + 1;
unsigned char c = b - a;
printf("%d %d %d\n", a, b, c);
}
结果:255 0 1。可见无符号整形溢出,不影响c=b-a的实际意义。
有符号整形:
C的规范定义是“undefined behavior”,也就是不一定是什么结果。