前几天看书,看到这样的题目:
计算含有&& 和 || 的运算数表达式时,只要得到了结果真或假,求值的过程就停止,把这样的计算称为短路求值。
假设 expr1 和 expr2 是表达式,expr1的值是0。在对逻辑表达式 expr1 && expr2 的求值时,不会对expr2进行求值,这是因为整体上来说,已经决定了该逻辑表达式的值为0。我给你几个例子你可以在机器上运行一下,你可以先尝试自己写出运行结果,再检查自己是否正确
/*短路求值*/
#include <stdio.h>
int main(void)
{
int i, j;
i = 2 && (j = 2);
printf("%d
%d\n", i, j);
(i = 0) && (j = 3);
printf("%d
%d\n", i, j);
i = 0 || (j = 4);
printf("%d
%d\n", i, j);
(i = 2) || (j = 5);
printf("%d
%d\n", i, j);
return 0;
}