C/C++ 中有没有一种方法可以使用 sizeof 运算符计算某种数据类型可表示的 2 的最大幂?
例如,假设我有一个unsigned short int. 它的值可以在0和之间65535。因此 anunsigned short int可以包含的最大二的幂是32768。
我将它传递unsigned short int给一个函数,我(目前)和算法看起来像这样:
if (ushortParam > 32768) {
ushortParam = 32768; // Bad hardcoded literals
}
但是,将来,我可能想更改变量类型以合并更大的 2 次方。是否有使用 sizeof() 的与类型无关的公式可以实现以下目标:
if (param > /*Some function...*/sizeof(param) )
{
param = /*Some function...*/sizeof(param);
}
请注意,该参数永远不需要浮点精度 - 仅整数。