逻辑或 ‘||’ ,原来你是这样的

前两天做了一道题:输出 1~100 之间出现 9 的次数。
这道题算是让我差点掉到 或 ‘||’ 的坑里,所幸我一开始的程序是对的,对比之后发现了问题所在,我们来看程序:
int main()
{
	int i, count = 0;
	for(i = 1; i <= 100; i++)
		{
			if(i%10 == 9)
			 count++;
	                if(i/10 == 9)
		         count++;
	    }
	printf("%d\n", count);
	system("pause");
	return 0;
}

在这里插入图片描述
我当时就想的是两者中间用 或 ‘||’ 岂不是能使程序更简单,但是运行出来结果少了一次:

int main()
{
	int i, count = 0;
	for(i = 1; i <= 100; i++)
		{
			if((i%10 == 9)||(i/10 == 9))
		     count++;
	    }
	printf("%d\n", count);
	system("pause");
	return 0;
}

在这里插入图片描述
原因是 || 的第一个操作数为真时就不会计算第二个操作数了。仅当第一个操作数的计算结果为 false (0) 时计算第二个操作数。在逻辑"或"表达式为 true 时,这将消除对第二个操作数的不必要的计算。
所以在计算 99 的时候,第一个操作数为真,就不会计算第二个操作数了,也就是少计算了一次出现9的次数。

猜你喜欢

转载自blog.csdn.net/weixin_43223421/article/details/82831218