("!")运算符不是在任何地方都有效吗?

does not("!") operator valid everywhere?

本文关键字:有效 任何地 运算符      更新时间:2023-10-16

下面的代码将

调用Sales_item对象的成员函数item1。c ++ Primer 4 edi.(book)

// first check that item1 and item2 represent the same book
if (item1.same_isbn(item2))

如果ISBN是item1 is equal to item2,它将返回true,但是你给了我一些练习,让我想使用与原始条件相反的效果,不等于(显然),所以我把它写成这样

if (!item1.same_isbn(item2))

编译器将编译,但结果与预期的不符,所以有一些东西告诉我代码是有效的,但处理了一些我不期望的东西。

那么,根据标题所说,not("!")操作符实际上在任何地方都是相同的吗?

!一元运算符可以应用于任何标量(数字或指针)表达式。操作数转换为bool,如果表达式为假,结果为真,如果表达式为真,结果为假。

对于数字操作数,!x相当于x != 0。对于指针操作数也是如此(如果指针是空指针,则为真)

还可以应用于任何转换为bool的类型的表达式,当然也可以应用于定义了重载operator !的类型。

在本例中:

if (!item1.same_isbn(item2))
{
    //execute this branch if item1.same_isbn(item2) == false
}
else
{
    //execute this branch if item1.same_isbn(item2) == true
}

如果item1.same_isbn(item2)等于false,上面的语句将求值为true。

Try

if (!(item1.same_isbn(第二条)))

注意:确保item1.same_isbn(item2)返回truefalse