not("!") 运算符在任何地方都有效吗?

发布于 2024-12-21 05:44:10 字数 472 浏览 0 评论 0 原文

下面的代码将

调用名为 item1 的 Sales_item 对象的成员函数。 -C++ Primer 第 4 版。(书)

// first check that item1 and item2 represent the same book
if (item1.same_isbn(item2))

如果item1的ISBN等于item2,它将返回true,但是你给出了一些练习,这让我想使用与原始条件相反的效果,而不是等于(显然),所以我这样说,

if (!item1.same_isbn(item2))

编译器将编译,但结果与预期不符,所以有一些东西告诉我代码在哪里有效,但处理了我不期望的东西。

那么,按照标题所说, not("!") 运算符实际上在任何地方都一样工作吗?

the code below will

calls a member function of the Sales_item object named item1. -C++ Primer 4th edi.(book)

// first check that item1 and item2 represent the same book
if (item1.same_isbn(item2))

which will return true if ISBN of item1 is equal to item2, but thee give some exercise which make me want to use opposite effect to the original condition, not equal(obviously), so I put it like this

if (!item1.same_isbn(item2))

the compiler will compile but the result miss from the expected one, so there something that told me that where code is valid, but processing something that I'm not expected.

so, per title said, does the not("!") operator actually work the same everywhere?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏末的微笑 2024-12-28 05:44:10

! 一元运算符可以应用于任何标量(数字或指针)表达式。操作数转换为 bool,如果表达式为 false,则结果为 true,如果为 true,则结果为 false。

对于数字操作数,!x 相当于 x != 0。对于指针操作数来说也是如此(如果指针是空指针,则为 true。)

它也可以应用于任何类型的表达式,只要转换为 bool ,或者,当然,对于定义了重载运算符 ! 的任何类型。

The ! unary operator can be applied to any scalar (numeric or pointer) expression. The operand is converted to bool, and the result is true if the expression is false, and false if it's true.

For a numeric operand, !x is equivalent to x != 0. It's the same for a pointer operand (it's true if the pointer is a null pointer.)

It can also be applied to an expression of any type for which there's a conversion to bool, or, of course, for any type for which an overloaded operator ! is defined.

谜泪 2024-12-28 05:44:10

在此示例中:

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。

in this example:

if (!item1.same_isbn(item2))
{
    //execute this branch if item1.same_isbn(item2) == false
}
else
{
    //execute this branch if item1.same_isbn(item2) == true
}

The above statement will evaluate to true if item1.same_isbn(item2) is equal to false.

蛮可爱 2024-12-28 05:44:10

尝试

if (!( item1.same_isbn(item2)))

注意:确保 item1.same_isbn(item2) 返回 truefalse

Try

if ( ! ( item1.same_isbn(item2)))

Note : make sure item1.same_isbn(item2) returns a true or false

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文