逻辑或 ‘||’ ,原来你是这样的
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的次数。
相关文章推荐
- SQL SERVER 原来还可以这样玩 FOR XML PATH
- 原来我还可以这样活:拆掉思维里的墙
- 原来python是可以这样用的
- 本来想转一下收藏的,但是网速很慢,只好这样了,冒犯一下原来的版主了
- 第K大数-二分原来还可以这样
- 给字符数组的一个字符赋值整数0的结果原来是这样
- 原来JS是这样的 - 提升, 作用域 与 闭包
- 通达OA 太牛了!工作流表单设计中级联菜单原来可以这样实现(图文)
- java代理模式-原来你是这样的代理
- 原来Javascript还是可以这样写的
- 原来时差是这样的!
- 原来可以这样
- 原来还有这样一个东西,重来不知道过-linux ,ulimit
- 原来cvMinMaxLoc的roi是这样的
- Qt中通过ui怎么引用不了pushbutton呢? 原来是这样…
- 原来小清新色调是这样调出来的~
- 中学教科书示意图原来是这样画的!
- 高逼格的画图:VIM原来可以这样玩
- 原来是这样滴
- 不引入第三变量的变量交换的几种方法(原来可以这样......编程真美妙)