来自无符号积分类型样式的转换.这种风格好吗?

Ana*_*oly 1 c c++

很多时候我看到程序员做了以下演员

unsigned long long minimumValue;
minimumValue = (unsigned long long)-1;
Run Code Online (Sandbox Code Playgroud)

但为什么他们这样做,而不是int minimumValue = -1

Mik*_*our 5

这是给出无符号类型的最大值(非最小值)的技巧.从有符号值转换使用模运算来给出无符号类型范围内的值; 所以-1变成pow(2,N)-1为无符号类型与N位,这是最大的表示值.

演员表并不是绝对必要的,但有些编译器可能会在没有它的情况下发出警告.

更好的风格可能是指定ULLONG_MAX,或者std::numeric_limits<unsigned long long>::max()在C++中.