我有一个掩码程序(它为给定大小的下半部分创建一个全1的位掩码):
template<class T>
T bottom_half() {
T halfway = ((sizeof(T) * 8) / 2);
T mask = (1 << halfway) - 1;
return mask;
}
如果我调用bottom_half<int>()
or long
or ,它工作正常char
。但是由于某种原因,当我运行它时long long
,halfway
正确设置为,32
但是。为什么会这样?mask
0