您的位置:首页 > 其它

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

2018-09-24 18:55 85 查看
前两天做了一道题:输出 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);
sy
4000
stem("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的次数。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: