!在c ++中的含义(以下上下文)

时间:2011-06-09 01:02:29

标签: c++ operator-keyword

我知道什么!= if if(x!= value){...},但在下面的语境中意味着什么:

 if (! ReadConsoleInput(
                hStdin,      // input buffer handle
                irInBuf,     // buffer to read into
                128,         // size of read buffer
                &cNumRead) ) // number of records read
            ErrorExit("ReadConsoleInput");

if (! SetConsoleMode(hStdin, fdwMode) )
        ErrorExit("SetConsoleMode");

 if (! GetConsoleMode(hStdin, &fdwSaveOldMode) )
        ErrorExit("GetConsoleMode");

3 个答案:

答案 0 :(得分:8)

它是“Not”运算符:如果操作数为零,则为true(1),否则为false(0)。

答案 1 :(得分:3)

!是LOGICAL NOT,即:if (! boolVar)等于if (true != boolVar)if (! intVar)等于if (0 == intVar)

如果你有一个错误返回0的函数foo(),检查if (! foo())基本上是检查函数是否成功,失败时输入括号。

当然,您确切地知道每个函数的返回值策略,没有关于它的法律或规则。

答案 2 :(得分:0)

!表示“逻辑 - 不”......它反转以下值的布尔意义(即测试以下值为false)。如有必要,以下值将首先转换为布尔值:除0以外的数字/指针值为true0(NULL)为false;类可以提供转换运算符,该运算符将提供bool或可转换为bool的数字/指针类型。符合标准的编译器甚至允许您编写功能相同的代码:

if (not xyz...)