gpt4 book ai didi

c - C中逻辑或执行的顺序

转载 作者:太空狗 更新时间:2023-10-29 17:15:12 24 4
gpt4 key购买 nike

想知道如果 next 的值为 NULL(节点是链表),next 语句是否会导致保护错误和其他可怕的事情。

if (!node->next || node->next->some_field != some_value) {

我假设一旦第一部分为真,就不会评估 OR 的第二部分。我的假设是错误的吗?这个编译器是特定的吗?

最佳答案

在 ISO-IEC-9899-1999 标准 (C99) 中,第 6.5.14 节:

The || operator shall yield 1 if either of its operands compare unequal to 0; otherwise, it yields 0. The result has type int. 4 Unlike the bitwise | operator, the || operator guarantees left-to-right evaluation; there is a sequence point after the evaluation of the first operand. If the first operand compares unequal to 0, the second operand is not evaluated.

这不是特定于编译器的。如果 node->nextNULL,则条件的其余部分从不 求值。

关于c - C中逻辑或执行的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com