如果第一个条件通过,OR 中的第二个条件是否会被执行?

发布于 2024-11-27 00:58:50 字数 148 浏览 3 评论 0原文

例如:

if(pos == -1 || character_array[pos] == 0) {

}

如果 pos 为 -1,我可以指望它永远不会崩溃吗?

第一个条件失败的 AND 语句也是如此。

For example:

if(pos == -1 || character_array[pos] == 0) {

}

If pos is -1, can I count on this NEVER crashing?

Same goes with AND statements in which the first conditional fails.

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

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

发布评论

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

评论(3

§普罗旺斯的薰衣草 2024-12-04 00:58:50

C 支持使用逻辑 ||短路评估&& 运算符,因此在您的情况下它应该按照您的描述工作,即不会崩溃。

C supports short-circuit evaluation with the logical || and && operators, so in your case it should work as you describe, i.e. not crash.

吲‖鸣 2024-12-04 00:58:50

这是特定于语言的,但如果第一部分对于 || 为 true,则大多数语言将忽略语句的其余部分。

同样,如果 && 的一部分为 false,大多数语言都会忽略语句的其余部分。

如果您希望执行所有内容,请改用单个 |& 运算符。

This is language specific, but most languages will ignore the rest of the statement if the first part is true for a ||.

Similarly, most languages will ignore the rest of the statement if a part of a && is false.

If you want everything to be executed, then use the single | and & operators instead.

浅唱ヾ落雨殇 2024-12-04 00:58:50

是的,您可以信赖这一点。 C标准的相关部分是6.5.13:

与按位二进制 & 运算符不同,&& 运算符保证
从左到右评估;后面有一个序列点
第一个操作数的求值。如果第一个操作数比较相等
0 时,不计算第二个操作数。

和 6.5.14:

与按位 | 运算符不同,|| 运算符保证
从左到右评估;后面有一个序列点
第一个操作数的求值。如果第一个操作数比较不相等
0 时,不计算第二个操作数。

例如,以下是惯用的 C:

if (foo && foo->bar > 10)

Yes, you can count on this. The relevant parts of the C standard are 6.5.13:

Unlike the bitwise binary & 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 equal
to 0, the second operand is not evaluated.

and 6.5.14:

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.

For example, the following is idiomatic C:

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