很多时候我看到程序员在做下面的转换
unsigned long long minimumValue;
minimumValue = (unsigned long long)-1;
但为什么他们这样做,而不是 int minimumValue = -1
?
最佳答案
这是一个给无符号类型的最大值(不是最小值)的技巧。从有符号值转换使用模运算给出无符号类型范围内的值;所以-1
变成 pow(2,N)-1
对于带 N
的无符号类型位,这是最大的可表示值。
转换不是绝对必要的,但如果没有它,一些编译器可能会发出警告。
更好的样式可能是指定 ULLONG_MAX
, 或 std::numeric_limits<unsigned long long>::max()
在 C++ 中。
关于c++ - 从无符号整数类型样式转换。这种风格好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990806/