【发布时间】:2022-07-12 00:00:01
【问题描述】:
查看this 和this 等链接,我知道C++ 中的unsigned int 应该是16 位的。因此,它可以存储的最大值应该是32767。
一个。为什么我们可以将INT_MAX存储在一个int变量中,比如:
int res=INT_MAX;
b.计算2 的幂的代码like below 如何有效(运行时没有任何错误/警告):
class Solution {
public:
bool isPowerOfTwo(int n) {
return n>0 && (!(n&n-1));
}
};
因为约束说:-2^31 <= n <= 2^31 - 1,我们不应该使用long吗?
【问题讨论】:
-
通过查看您链接的页面,我无法得出 c++
unsigned int必须为 16 位的结论。该标准要求它具有至少 16 位。 -
@JakobStark,哦,所以上面的代码 sn-ps 都是平台相关的?
-
对于大多数平台
unsigned int有 32 位 (Windows/Linux/MacOS/iOS/Android/...)。例如在 Arduino 上它是 16 位。 -
请向下翻页到 Properties 表 Fundamental types
signed int至少 16。然后使用static_assert(sizeof(unsigned int) == 16);检查您的编译器 -
int(以及更多基本类型)的大小取决于您正在编译的平台。如果您需要特定宽度,请使用std::int16_t或等效项