【发布时间】:2018-02-27 08:07:42
【问题描述】:
假设我有一台 32 位机器。
我知道在整数提升期间,表达式被转换为:
-
int如果原始类型的所有值都可以用 int 表示 -
unsigned否则
你能解释一下下面的表达式会发生什么吗?总的来说,这里的排名是如何运作的?
第一个sn-p:
int16_t x, pt;
int32_t speed;
uint16_t length;
x = (speed*pt)/length;
第二个:
x = pt + length;
#编辑:
我发现以下链接非常清楚地描述了该问题: Implicit type conversion.
具体看Lundin的回答,很有帮助!
【问题讨论】:
-
si16、si32和u16是什么? -
在不知道
sizeof(int)相对于sizeof(si16)和其他人的情况下,问题是不可能的答案。 -
"假设我有 32 位机器。"根本不相关。我们需要知道您的
int的详细信息。 -
@David Bowling ,si16 表示有符号短(大小 16 位),si32 位表示有符号整数(大小 32 位),u16 表示无符号短(大小 16)
-
为什么是
si16而不是u16,而不是ui16?
标签: c integer-overflow integer-promotion