据我所知,C 对逻辑表达式使用惰性计算,例如。 G。在表达上
f(x) && g(x)
如果
g(x)
为 false,则不会调用 f(x)
。但是算术表达式呢
f(x)*g(x)
如果
g(x)
为零,是否会调用 f(x)
? 最佳答案
在逻辑运算符 &&
和 ||
评估顺序的情况下,从左到右发生短路并发生短路。&&
(逻辑与)、||
(逻辑或)(作为短路评估的一部分)的左右操作数的评估之间有一个序列点。例如,在表达式 *p++ != 0 && *q++ != 0
中,子表达式 *p++ != 0
的所有副作用在任何尝试访问 q
之前都已完成,但在算术运算符的情况下则不然。
关于c - C 中的惰性算术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19206519/