【发布时间】:2012-01-19 22:43:05
【问题描述】:
下面的代码将
调用名为 item1 的 Sales_item 对象的成员函数。 -C++ Primer 4th edi.(书)
// 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("!") 操作符实际上在任何地方都一样吗?
【问题讨论】:
-
如果我在这里错了,请纠正我,但你是说
if (!item1.same_isbn(item2)) { foo(); }在 item1 匹配 item2 时永远不会执行foo? -
你确定
item1.same_isbn(item2)正在返回一个布尔值(真或假)吗?如果在if语句之前的行上执行cout << item1.same_isbn(item2);会得到什么? -
它在定义它的每个操作数上一致地运行。在
!item1.same_isbn(item2)的情况下,!运算符的操作数是什么?类型是什么?!是否在该类型上定义? -
Mike Bantegui,是的,我想说... @Gaurav,是的,我敢肯定,当 ISBN 为两项相等。
-
@Vastor:太棒了。当两个 ISBN 不同时会返回什么?
标签: c++ if-statement conditional operator-keyword