函数返回 -1 和 ~0 之间有很大区别吗?
Is there a big difference between a function returning -1 and ~0?
考虑两个简单的函数:
int return0Comp(){
return (~0);
}
int returnNeg1(){
return -1;
}
我知道在二进制补码系统中,~0==-1
,但如果系统未使用它(甚至会发生这种情况吗?*),这两个函数是否会返回不同的值?
标准说 [expr.unary.op.10]
The operand of ~ shall have integral or unscoped enumeration type; the
result is the one’s complement of its operand.
我读到 ~
总是只是反转所有位,所以结果的解释确实应该取决于所使用的表示。
考虑两个简单的函数:
int return0Comp(){
return (~0);
}
int returnNeg1(){
return -1;
}
我知道在二进制补码系统中,~0==-1
,但如果系统未使用它(甚至会发生这种情况吗?*),这两个函数是否会返回不同的值?
标准说 [expr.unary.op.10]
The operand of ~ shall have integral or unscoped enumeration type; the result is the one’s complement of its operand.
我读到 ~
总是只是反转所有位,所以结果的解释确实应该取决于所使用的表示。