("!")运算符不是在任何地方都有效吗?
does not("!") operator valid everywhere?
下面的代码将
调用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)
返回true
或false
相关文章:
- 欧拉项目#8答案是大以获得有效答案
- 调整大小后指向元素值的指针unordered_map有效?
- 为什么是0;C++中的有效语句
- 最高有效数字侧的第N位
- GCC对可能有效的代码抛出init list生存期警告
- 有效地使用std::unordered_map来插入或增加键的值
- c++中O(n^(1/3))中一个数的除数的有效计数
- 使用无符号字符数组有效存储内存
- 自定义先决条件对移动分配运算符有效吗
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 为什么这种直接初始化有效?(C++17)
- 递归函数有效,但无法记忆
- 在C++中初始化向量映射的最有效方法
- 如果变量名称不跟在 char* 后面,const char* 是否有效?
- 钳制迭代器是否有效
- 如何有效地在 std::vector 中插入一对?
- C++模板 t 不是有效的模板类型
- 检查由括号、方括号和大括号组成的一组方括号是否有效?
- 将此布尔值传递给此函数的最有效方法是什么?