逻辑与、逻辑或 非常基础的一个问题!
时间:2010-09-03
来源:互联网
本帖最后由 zhangsuozhu 于 2010-09-03 16:39 编辑
复制代码
从中可以看出:
复制代码
只要判断出一个条件为假,后面的就不运行了,即二个test都没有执行。
复制代码
只要判断出一个条件为真,后面的就不判断了。
我的问题是,C语言里是否有这样的标准!即 逻辑与 中,从左向右依次求表达的的值,如果有一个为假,就直即返回整个表达式。
逻辑或,从左向右依次求表达的的值,如果有一个为真,就直即返回整个表达式。
- #include <stdio.h>
- int test1(char *p)
- {
- if (!p) {
- printf("test1: p is NULL\n");
- return 0;
- }
- printf("test1: p isn't NULL\n");
- return 1;
- }
-
- int test2(char *p)
- {
- if (!p) {
- printf("test2: p is NULL\n");
- return 0;
- }
- printf("test2: p isn't NULL\n");
- return 1;
- }
-
- int main()
- {
- char *p = NULL;
- if (p && test1(p) && test2(p))
- ;
- p = "hehe!";
- if (p || test1(p) || test2(p))
- ;
- return 0;
- }
- if (p && test1(p) && test2(p));
- if (p || test1(p) || test2(p));
我的问题是,C语言里是否有这样的标准!即 逻辑与 中,从左向右依次求表达的的值,如果有一个为假,就直即返回整个表达式。
逻辑或,从左向右依次求表达的的值,如果有一个为真,就直即返回整个表达式。
作者: zhangsuozhu 发布时间: 2010-09-03
逻辑短路啊。
作者: 论坛ID 发布时间: 2010-09-03
标准是那样的
作者: hellioncu 发布时间: 2010-09-03
对,短路
作者: liwangli1983 发布时间: 2010-09-03
C标准是吧。那我可就放心的用啦。以后就这样用不会产生问题是吧?
复制代码
一定是先查p如果是空就不查 *p了是吧!
- if (p && *p) printf("%s\n", p);
作者: zhangsuozhu 发布时间: 2010-09-03
不同编译器没有从右往左的吧。
作者: zhangsuozhu 发布时间: 2010-09-03
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28