我有以下的C代码:
uint8_t firstValue = 111;
uint8_t secondValue = 145;
uint16_t temp = firstValue + secondValue;
if (temp > 0xFF) {
return true;
}
return false;
这是另一种实现方式:
uint8_t firstValue = 111;
uint8_t secondValue = 145;
if (firstValue + secondValue > 0xFF) {
return true;
}
return false;
第一个例子很明显,uint16_t
类型足够大以包含结果。
当我在OS/X上使用clang
编译器尝试第二个例子时,它正确地返回了true。那里发生了什么?是否有一种临时的更大的类型来容纳结果?