你们能向我解释一下 signed char
和 unsigned char
的溢出和下溢是如何工作的吗?
int main () {
signed char c;
scanf("%d",&c);
printf("%d\n",c);
printf("%c\n",c);
return 0;
}
在这种情况下,如果使用
scanf
,给变量c
赋值c=200
,会发生溢出,并且第一个printf
会显示出来。第二个
printf
输出相同的 ASCII 符号 200...为什么呢?
scanf("%d",&c)
不是溢出或下溢,而是未定义行为。 - aschepler