我正在通过cplusplus.com学习C ++,并遇到类似75u
的内容,它似乎描述了一个无符号常量。
让我感到困惑的是:当已经有一个规定来声明75
将被指定为无符号的变量时,宣布一个常数为无符号是什么意思?
为什么在将数字u
分配给(例如)unsigned int时,是否会特意添加unsigned int i = 75;
?
之间有什么区别
unsigned int i = 75u;
和
{{1}}
答案 0 :(得分:8)
那是因为=
左侧的变量类型(在赋值中) nothing 与表达式的计算方式有关(右手边。)
这似乎让许多新程序员感到惊讶,但它仍然是正确的。
这样的事情:
const float two_thirds = 2 / 3; /* Bad code! */
不将0.6666667分配给two_thirds
;由于2
和3
都是int
文字,因此使用整数数学计算表达式。
你需要:
const float two_thirds = 2.f / 3;
强制表达式为float
。类似的推理适用于unsigned
的使用,因为它的范围大于有符号变量。