我是 C++ 的初学者,所以这似乎是一个愚蠢的问题。请逗我开心!
我正在使用 static_cast<int>(numeric_limits<unsigned_char>::min())
和 ::max()
(根据 this post ),还发现了 here可以在 numeric_limits 之前使用 + 或 - 符号来获得相同的结果。我是否正确地假设 +/- 基本上只是告诉编译器接下来是一个数字?为什么我要使用它而不是 static_cast?
最佳答案
Am I correct in assuming that the +/- is basically just telling the compiler that the next thing is a number?
没有。
+
和 -
只是算术运算符。对于数字操作数,一元减号运算符改变右手运算符的符号,而一元加号运算符不改变符号。
即使操作数是 unsigned char 结果也是 int 的原因是因为所有算术运算符的所有操作数总是转换为 int(如果操作数类型的所有值都不能用 int 表示,则转换为 unsigned int)如果他们的等级较低。这种特殊的转换称为整数提升。
Why would I use that as opposed to a static_cast?
输入的字符更少。如果这对您有吸引力,那么也许您会为此目的使用它。如果不是,那么也许您应该改用静态转换。
关于C++:+ 或 - 可以告诉编译器一个值应该是一个 int 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67608374/