逻辑运算符!在整数值上

时间:2017-04-18 03:51:42

标签: c

我对此有疑问!操作

如果我申请整数变量,例如:

int i=7;
!i;
return i;

功能给我7,好的; 在编译此代码之前,我几乎肯定会返回248(00000111上的否定运算符到11111000)。 (我正在使用gcc)。

为什么我错了?感谢您的耐心等待!

2 个答案:

答案 0 :(得分:2)

您不保存操作结果。运算符返回结果但不更新原始变量。您需要将结果分配回变量。 !~不同。前者是逻辑非运算符,而后者是按位否定运算符。这是你需要的后者。

因此i = ~ireturn ~i会按您的意愿行事。

答案 1 :(得分:1)

  1. 您没有将更改的值保存到变量中。
  2. '!'是一个逻辑运算符而不是按位。它将真值转换为false或反转。
  3. 整数值7在逻辑运算时为真。所以,如果你反转它,它就变为0,这意味着错误。