我对此有疑问!操作
如果我申请整数变量,例如:
int i=7;
!i;
return i;
功能给我7,好的; 在编译此代码之前,我几乎肯定会返回248(00000111上的否定运算符到11111000)。 (我正在使用gcc)。
为什么我错了?感谢您的耐心等待!
答案 0 :(得分:2)
您不保存操作结果。运算符返回结果但不更新原始变量。您需要将结果分配回变量。 !
与~
不同。前者是逻辑非运算符,而后者是按位否定运算符。这是你需要的后者。
因此i = ~i
或return ~i
会按您的意愿行事。
答案 1 :(得分:1)
整数值7在逻辑运算时为真。所以,如果你反转它,它就变为0,这意味着错误。