在 C/C++ 中有没有一种方法可以使用 sizeof 运算符计算特定数据类型可表示的 2 的最大幂?
例如,假设我有一个unsigned short int
。它的值可以介于 0
和 65535
之间。
因此 unsigned 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);
}
请注意,该参数永远不需要浮点精度 - 仅整数。
最佳答案
设置该参数大小的变量的最高有效位将为您提供 2 的最高次幂。
1 << (8*sizeof(param)-1)
关于c++ - 使用 sizeof 获得两个的最大幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987834/