我正在尝试移植这段C#代码: public static ulong WILDCARD_COLLISION_TYPE { get { int parse = ~0; return (ulong)parse; } } 如果我理解正确,~符号不是执行按位补码吗?那么做~0有什么意义呢?然后将其返回?
从~运算符文档中得知: ~运算符对其操作数执行位补码运算,从而反转每个位。 位补码运算符已为int,uint,long和ulong预定义。 例如: unsigned int i = ~0; Result: Max number I can assign to i and signed int y = ~0; Result: -1 更多信息可以这样说,~0只是一个所有位都设置为1的int。当作为无符号数解释时,这将等同于UINT_MAX。当作为有符号数解释时,这将是-1。
int parsed = unchecked((int) 0xFFFFFFFF);
,你可以直接写成return 0xFFFFFFFFUL;
,但是很容易 数错F
。 - Dmitry Bychenko