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);
}
请注意,该参数永远不需要浮点精度 - 仅整数。