【发布时间】:2019-05-13 13:19:38
【问题描述】:
我相信当您将两个unsigned int 值相加时,返回值的数据类型将是unsigned int。
但是两个unsigned int 值相加可能会返回一个大于unsigned int 的值。
那么为什么unsigned int + unsigned int 返回unsigned int 而不是其他更大的数据类型?
【问题讨论】:
-
如果你把它们加在一起你会得到另一个更大的数据类型?所以你的程序中有 100 行内存不足?
-
如果你需要处理溢出,你必须将它编程到你的代码中。
-
unsigned int+unsigned int永远不能大于unsigned int,因为所有数学运算都是以2^unsigned int bits为模完成的 -
当你做
int + int它也可能溢出。该返回应该说long long int吗? -
那么为什么
unsigned+unsigned会返回unsigned? 这就是它在语言中的定义方式。原因可能是底层硬件可能会这样做。虽然,CPU 可能有一个进位标志来存储溢出,但这并没有反映在 C++ 中。