如果第一个条件通过,OR 中的第二个条件是否会被执行?
例如:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
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.这是特定于语言的,但如果第一部分对于
||
为 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.是的,您可以信赖这一点。 C标准的相关部分是6.5.13:
和 6.5.14:
例如,以下是惯用的 C:
Yes, you can count on this. The relevant parts of the C standard are 6.5.13:
and 6.5.14:
For example, the following is idiomatic C: