!(变量)和(!变量)之间的区别

Bri*_*ian 3 c c++ if-statement

在C或C++中,使用!(variable)(!variable)在a之间是否有确定的区别if-statement,例如:

if (!(variable)) { .. // do something }

要么

if (!variable && !(variable2)) { .. // do something }

这样一个版本提供的结果与另一个版本不同?

cmu*_*t78 8

一切都与操作顺序有关.使用!(变量)将评估括号内的所有条件然后执行!(或NOT)确定是否输入if语句where-as(!变量将特别对变量本身进行NOT.

所以在这种情况下:

!(true && false) = true
!(true && true) = false
(!true && !false) = false
(!true && true) = false
!(true && !false) = false
Run Code Online (Sandbox Code Playgroud)

...等等

希望这有帮助.


Jor*_*dan 6

它产生差异的唯一方法是,如果变量是表达式,那么它是运算符优先级的问题.否则&&优先级低于!

  • 表达式或宏! (7认同)
  • 将括号放在宏本身中最好,或者最好完全避免使用宏.http://stackoverflow.com/questions/5807090/c-preprocessor-question/5807109#5807109 (3认同)