【发布时间】:2012-10-09 20:32:08
【问题描述】:
可能重复:
C integer overflow behaviour when assigning to larger-width integers
我在谷歌搜索中没有找到明确的答案。假设你有两个表达式:
int16_t a16 = 100;
int16_t b16 = 2000;
int16_t result16 = (a16 * b16) / a16;
int8_t a8 = 100;
int8_t b8 = 20;
int8_t result8 = (a8* b8) / a8;
在评估表达式 (a16 * b16) / a16 和 (a8 * b8) / a8 时,它们总是在评估期间提升为 int,然后在分配,还是这个整数提升完全是可选的?是否总是在评估整数表达式时进行整数提升,还是只是允许?
如果它总是完成,那么我可以预期这两个操作不会溢出(假设 int 是 32 位)。如果只允许完成(而不是必需),则操作可能会溢出。我想更好地了解这种行为。
【问题讨论】:
标签: c integer-promotion