可能的重复问题:
使用-1设置所有位为真是安全的吗?
int max = ~0; 是什么意思?
你好,
我偶然发现了这段代码...
size_t temp;
temp = (~0);
有人知道它是做什么的吗?
可能的重复问题:
使用-1设置所有位为真是安全的吗?
int max = ~0; 是什么意思?
你好,
我偶然发现了这段代码...
size_t temp;
temp = (~0);
有人知道它是做什么的吗?
这是一种通常用于分配一个由所有二进制位组成的size_t
值,独立于size_t
类型的实际大小。如果这是代码的目的,那么应该使用(size_t)(-1)
。
顺便说一下,这里有一个相同的问题。
static_cast
。他确实说的是C语言。 - cnicutar~
是按位取反运算符,它会翻转操作数的每个比特位。在这种情况下,操作数为0,因此每个比特位最初都是0,在应用按位取反之后,每个比特位都将变为1。最终结果是你得到一个填满1位的size_t。
int
为size_t
的结果是,使用二进制补码表示法,得到的是一个填满1位的size_t
。 - Steve Jessopint
是有符号的,所以表示方式影响了 int
-> size_t
转换。如果 int
是取补码,则结果将为 0
,而如果 int
是符号-大小,则结果将为 (size_t)(INT_MAX) + 2
。 - Steve Jessop这个怎么样?
C++代码:
#include <limits>
std::size_t temp = std::numeric_limits<std::size_t>::max();
C 代码:
请查看问题。
我认为这是更合适的方法。