C++ “!”运算符不是处处有效吗?
下面的代码将 调用名为item1的Sales_item对象的成员函数-C++引物第四EDI(书) 如果C++ “!”运算符不是处处有效吗?,c++,if-statement,conditional,operator-keyword,C++,If Statement,Conditional,Operator Keyword,下面的代码将 调用名为item1的Sales_item对象的成员函数-C++引物第四EDI(书) 如果item1的ISBN等于item2,则返回true,但是你做了一些练习,使我想使用与原始条件相反的效果,不等于(显然),所以我这样说 if (!item1.same_isbn(item2)) 编译器将进行编译,但结果与预期结果不符,因此有一些信息告诉我哪里的代码是有效的,但处理了一些我不期望的内容 那么,根据标题所述,操作符(“!”)是否在任何地方都工作相同?在本例中: if (!item1.
item1的ISBN等于item2,则返回true,但是你做了一些练习,使我想使用与原始条件相反的效果,不等于(显然),所以我这样说
if (!item1.same_isbn(item2))
编译器将进行编译,但结果与预期结果不符,因此有一些信息告诉我哪里的代码是有效的,但处理了一些我不期望的内容
那么,根据标题所述,操作符(“!”)是否在任何地方都工作相同?在本例中:
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\u isbn(item2)
等于false,则上述语句将计算为true。请重试
如果(!(项目1.相同的isbn(项目2)))
注意:确保item1.same_isbn(item2)
返回true
或false
该代码>一元运算符可以应用于任何标量(数值或指针)表达式。操作数转换为bool
,如果表达式为false,则结果为true,如果表达式为true,则结果为false
对于数值操作数,!x
相当于x!=0
。指针操作数也是如此(如果指针是空指针,则为真)
它还可以应用于任何类型的表达式,对于该表达式,可以转换为bool
,当然,对于重载的运算符定义了code>。如果我在这里错了,请纠正我,但您是说如果(!item1.same_isbn(item2)){foo();}
在item1与item2匹配时从不执行foo
?您确定item1.same_isbn(item2)
返回布尔值(真或假)吗?如果对定义它的每个操作数执行一致的操作,会得到什么结果。在的情况下!item1.相同的isbn(item2)
,该的操作数是多少代码>操作员?什么类型的?是代码>定义在那个类型上?Mike Bantegui,是的,我想说的是@Gaurav,是的,我确信,当ISBN在两个项目之间相等时,它返回“1”(在布尔值中表示true)。@Vastor:Awesome。当两个ISBN不同时,它返回什么?只要操作员!没有为item1.same_isbn的返回类型定义。如果要执行其他操作,请检查此项,item1.same_isbn(item2)
,并确保它返回的内容。我这样放置std::cout,我将其视为!item1.same_isbn(item2)
如果item1和item2中的isbn不相等,则返回true。。。
if (!item1.same_isbn(item2))
{
//execute this branch if item1.same_isbn(item2) == false
}
else
{
//execute this branch if item1.same_isbn(item2) == true
}