我在通过cplusplus.com学习C++时遇到了类似75u的东西,它似乎描述了一个无符号常量。
让我困惑的是:既然已经有规定声明75将被赋值为无符号的变量,那么声明一个常量为无符号有什么意义?
更简单的说法是:
为什么在将一个数字赋值给(例如)一个无符号整数时,您要特别地将u添加到该数字中?
两者的区别是什么
unsigned int i = 75;和
unsigned int i = 75u;发布于 2014-05-26 23:28:21
这是因为=左侧的变量类型(在赋值中)与表达式的求值方式(右侧)无关。
这似乎让许多新程序员感到惊讶,但这仍然是真的。
如下所示:
const float two_thirds = 2 / 3; /* Bad code! */不将0.6666667赋值给two_thirds;由于2和3都是int文字,因此使用整数数学计算表达式。
您需要:
const float two_thirds = 2.f / 3;将表达式强制转换为float。类似的推理也适用于unsigned的使用,因为它比有符号变量具有更大的范围。
https://stackoverflow.com/questions/23873344
复制相似问题