在C编程标准中,整数" -127-1U"是什么意思?

时间:2017-02-01 18:09:21

标签: c binary

出于某种原因,我被引导相信这实际上是指-128为整数,但为什么不写-128?

2 个答案:

答案 0 :(得分:3)

-127-1U是一个常量表达式。

127整数常量。它的类型为int,具有明显的价值。应用了一元-运算符,得到的值-127,类型为int

1U也是一个整数常量。 U后缀使其成为unsigned int类型。

第二个-是一个减法运算符,它接受两个操作数。根据解析具有不同类型的二进制(双操作数)运算符的规则,int操作数被隐式转换为unsigned int。将-127int转换为unsigned int(假设int的典型32位2的补码表示)会产生类型为{{1}的4294967169 (更一般地说,它是unsigned int)。从中减去UINT_MAX - 126U会产生1U,再次类型为4294967168

我不知道这个表达的目的是什么。我必须看到更多的背景来推测。写unsigned int会更清楚。

答案 1 :(得分:-2)

他们可能正在尝试确定用于保存特定计算机或编译器上的数据的位大小。使用8位符号计算,计算将在流量下给出128或不下溢给出-128。