【问题标题】:how will the precedence of && and != work in a logical statement?&& 和 != 的优先级如何在逻辑语句中起作用?
【发布时间】:2017-04-26 16:14:30
【问题描述】:

而 (ptr!=NULL && dptr!=NULL && dptr->next!=NULL)

在这段代码中,如果指针 dptr 为 NULL,它将工作还是终止?

【问题讨论】:

  • 什么语言?请使用适当的标签。
  • 它怎么会终止?你没有调用任何终止函数。

标签: pointers operator-precedence


【解决方案1】:

这句话的真假实际上不仅基于 dptr,还基于 ptr 和 dptr->next。如果语句为真 - 将执行 while 循环的内容。

子语句(你的camparisons to not NULL)一个接一个地被检查——如果一个是假的,另一个不会被执行。对于大多数编程语言来说都是如此。虽然我还没有检查过所有人。 逻辑 && 以及 ||有一些内在的快速回报机制。他们都从左到右一步一步地进行子语句。 (加号 () )。使用 &&,检查在第一个错误语句时中止。与 ||检查在第一个正确的语句时中止。不会到达其他检查。

所以你的语句永远不会检查 dptr->next != NULL 是否 dptr 实际上是 NULL。因此,您的语句可以安全地访问 NULL 指针。

【讨论】:

    猜你喜欢
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2013-08-03
    相关资源
    最近更新 更多