void main(void) {
char x = 1 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 - 1;
printf("%d", x);
}
是整数的示例1.否定2.溢出3.下溢4.翘曲
输出为-1,那是否定的意思吗?
x = -x ;
x = CHAR_MAX + 1 ;
x = CHAR_MIN - 1 ;
那么您认为这是哪个?问问自己:
1 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 - 1
的值是什么?CHAR_MIN
和CHAR_MAX
是什么?这些在limits.h中定义。即使没有这些信息,您也可以从术语的定义和赋值表达式的性质中清楚地推断出正确答案。
为什么结果为负?这是一个不同的问题,但是显然不是由于negation
。