网站首页 > 技术文章 正文
在C语言的关系表达式及逻辑表达式运算中,按常规的运算是要将运算符中前后的表达式全部进行运算后再进行相应的运算,最后得出结果。
C语言中的逻辑运算符有三个,&&:与运算,||或运算,!非运算,其中&&运算只有当两边的值全为非为时结果才为1,||只有两边中有一个值为非0,则结果为1,而!运算则是对其后面的表达式进行取反运算。根据&&的运算规则,则只要前边的值为0,则整个&&运算表达式的值为0,如:int a=1,b; b=1<0&&++a;则运算后,a的值不变,b的值为0,因为1<0这个表达式的值为0,所以&&运算就决定了1<0&&++a这个表达式的结果一定为0,也就没必要对后面的++a再进行运算,所以a的值仍为1;根据||运算的规则,只有当两边全为0时结果才为0,因此,只要||运算符前面的表达式值为1,则||运算符后的表达式就不再进行运算,如:int a=1,b; b=1>0||++a;经过此运算后,a的值不变,b的值为1,因为1>0这个表达式的值为1,所以||就决定了1>0||++a这个表达式的值一定为1,也就没必要对++a再进行运算。
这种算法和现实中的行为是一样的,都已经知道了结果,就没必要再花费时间再去讨问这件事的结果。纯属浪费时间。如:
#include<stdio.h>//C语言逻辑表达式的惰性算法
main()
{
int a=2,b=3,c=4;
int d=a<3&&b<c||c++;
printf("%d,%d,%d,%d",a,b,c,d);
}
运行结果如下:
2,3,4,1
--------------------------------
Process exited after 0.006199 seconds with return value 7
请按任意键继续. . .
- 上一篇: 10道C语言笔试模拟题,你能做对几道
- 下一篇: 什么是堆栈,如何使用?堆栈技法详细讲解
猜你喜欢
- 2025-07-18 10道C语言笔试模拟题,你能做对几道
- 2025-07-18 Python:判断质数(python判断质数的代码)
- 最近发表
-
- Qt编程进阶(63):Qt Quick高级控件的使用
- Qt编程进阶(47):QML鼠标事件处理(qt编程难不难)
- 使用Xamarin和Visual Studio开发Android可穿戴设备应用
- Qt使用教程:创建Qt Quick应用程序(三)
- QML性能优化 | 常见界面元素优化(qml布局自适应大小)
- Qt使用教程:创建移动应用程序(二)
- Qt Quick 多媒体开发播放音乐和视频
- Qt使用教程:创建Qt Quick UI表单(三)
- 如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?
- QML控件:TextInput, TextField, TextEdit, TextArea用法及自定义
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- c 数组 (33)
- pascal语言教程 (23)
- ppt 教程 (35)
- java7 (24)
- 自适应网站制作 (32)
- server服务自动停止 (25)
- 超链接去掉下划线 (34)
- 什么是堆栈 (22)
- map entry (25)
- ubuntu装qq (25)
- outputstreamwriter (26)
- fill_parent (22)