【发布时间】:2020-10-15 17:20:32
【问题描述】:
评估时会发生什么
int x = -2147483648
?
-
在计算
-2147483648时,2147483648是一个整型常量,它的类型不是 int,而是 long 类型,因此计算-2147483648的结果 -2147483648 是 long 类型,而不是 int。 -
在评估赋值“int x = ...”时,RHS 是 long 类型的值 -2147483648,在
x的类型int的范围内。值-2147483648是否会隐式从long转换为int,且转换保持-2147483648不变?
谢谢。
【问题讨论】:
-
你的#1是一个问题还是一个断言?它读起来像一个断言。
-
注意
#define INT_MIN (-2147483647 - 1)的定义已经完成,因为2147483648不是int值,所以它不能被否定为int。在我的机器上-2147483648是long long类型,因为long与int相同(可以是)。 -
我对此投了反对票,因为这是您第四次重新要求不断关闭的同一副本,但以不同的形式隐藏了您真正想了解的内容
-2147483648的上下文作为INT_MIN的(错误)定义。 -
“2147483648 是一个整数常量,它的类型不是 int,”--> 可能。它可能需要输入
long long。
标签: c type-conversion integer