下面的代码是什么,存在整数吗?

问题描述 投票:-1回答:1
void main(void) {
    char x = 1 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 - 1;
    printf("%d", x);
}

是整数的示例1.否定2.溢出3.下溢4.翘曲

输出为-1,那是否定的意思吗?

c byte system data-representation
1个回答
0
投票
  • 否定只是在改变符号。例如:]]
    x = -x ;
  • 溢出是指结果超过数据类型的最大值。例如:
    x = CHAR_MAX + 1 ;
  • 下溢是指结果比数据类型的最小值lower低。例如:
    x = CHAR_MIN - 1 ;
  • “翘曲”-我不知道。看起来像一个虚构的名词,可以抓住那些真的不愿意为此做真正尝试的学生。
  • 那么您认为这是哪个?问问自己:

  • 1 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 - 1的值是什么?
  • 您的平台的CHAR_MINCHAR_MAX是什么?这些在limits.h中定义。
  • 即使没有这些信息,您也可以从术语的定义和赋值表达式的性质中清楚地推断出正确答案。

为什么结果为负?这是一个不同的问题,但是显然不是由于negation

© www.soinside.com 2019 - 2024. All rights reserved.