据我所知,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/

10-12 16:18