【发布时间】:2012-10-10 20:52:41
【问题描述】:
在 C/C++ 中有没有一种方法可以使用 sizeof 运算符计算某种数据类型可表示的 2 的最大幂?
例如,假设我有一个unsigned short int。它的值可以在0 和65535 之间。
因此,unsigned short int 可以包含的最大 2 次方是 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);
}
请注意,该参数永远不需要浮点精度 - 仅限整数。
【问题讨论】:
-
这是你可以使用 std::numeric_limits 做的事情吗?