以下代码
调用名为item1的Sales_item对象的成员函数。 -C ++ Primer 4th edi。(书)
// first check that item1 and item2 represent the same book
if (item1.same_isbn(item2))
如果item1 is equal to item2
的ISBN,它将返回true,但是你给我一些练习,这些练习让我想对原始条件使用相反的效果,不等于(显然),所以我把它这样说了
if (!item1.same_isbn(item2))
编译器会编译,但结果会从预期的结果中遗漏,所以有些东西告诉我代码有效,但处理的是我不期望的东西。
所以,按照标题说,不是(“!”)运算符实际上在哪里工作相同?
答案 0 :(得分:1)
!
一元运算符可以应用于任何标量(数字或指针)表达式。操作数转换为bool
,如果表达式为false,则结果为true;如果表达式为true,则结果为true。
对于数字操作数,!x
相当于x != 0
。对于指针操作数,它是相同的(如果指针是空指针,则它为真。)
它也可以应用于转换为bool
的任何类型的表达式,当然也适用于定义了重载operator !
的任何类型的表达式。< / p>
答案 1 :(得分:0)
:
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,则上述语句将评估为真。
答案 2 :(得分:0)
尝试
if(!(item1.same_isbn(item2)))
注意:请确保item1.same_isbn(item2)
返回true
或false