Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “!”运算符不是处处有效吗?_C++_If Statement_Conditional_Operator Keyword - Fatal编程技术网

C++ “!”运算符不是处处有效吗?

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的Sales_item对象的成员函数-C++引物第四EDI(书)

如果
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
,当然,对于重载的
运算符

如果我在这里错了,请纠正我,但您是说
如果(!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
}