逻辑运算0==x和x==0详解
来源:互联网 发布:ce录音软件好用吗 编辑:程序博客网 时间:2024/05/16 13:54
看许多大牛写的程序常常看到if(0==x){执行体},而自己写的程序常常使用if(x==0){执行体}。刚开始的时候我还很自信的认为这种表达方式是等价的,大牛们只是为了显摆下与众不同的格调。当读到C语言运算法结合性这部分的内容才恍然领悟大牛的考虑周全。分析过程如下:
“=”运算符的结合性是右结合(从右向左)"=="运算符的结合性是左结合。
0=i这种格式错误的 0==i和i==0是一样的。
看到这大家是不是明白了点。if(0==i)这么写的,是为了防止“==”写成“=”。如果不小心将“==”写成“=”
如何采用if(x==0)形式写就变成了if(x=0),即使写错编译器也不会报错。如果采用if(0==x)形式写就变成了if(0=x),编译器就给出报错。在VC中会报error C2106: “=”: 左操作数必须为左值的错误。
写个程序测试下:
// Test_zeroeqx.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int x=0;/*大牛的写法*/if(0==x)printf("x=0");else if(0!=x)printf("x!=0");/*一般人的写法当x==0写成了x=0程序正常执行 结果是x=0 x!=0*/if(x=0)printf("x=0");else if(x!=0)printf("x!=0"); /*去掉注释可以看出x=0返回false值*/ /* bool isZero; isZero=(x=0); if(isZero) printf("x=0返回false") else printf("x=0返回false"); */ getchar(); return 0;}
从测试程序可以看出,x=0返回false值。如果将"=="不小心写成"=",如果按照一般人的写法,我们很难发现错误。而是用大牛的写法,编译器直接报错。
1 0
- 逻辑运算0==x和x==0详解
- 老问题:关于X++和++X及其X=X++
- x=x|(x+1);和x=x&(x-1)?
- x=x&(x-1)
- x=x&(x-1)
- x = x&(x-1)
- x = x&(x-1)
- Java x=x+(x++)+(++x)分析
- 详解经典面试题 x = x & ( x
- y=x++ + ++x(int x=0)的结果?
- x = x.view(x.size(0), -1) 的理解
- x & (x - 1)==0
- x & (x - 1)==0
- x & (x - 1)==0
- x &= (x-1)
- x^x=10
- x^x=10
- x&(x-1)=?
- SQLServer和Oracle常用函数对比4.11
- ExpandableListView中的position
- Trapping Rain Water
- iOS set 方法
- QML类型说明-BluetoothService
- 逻辑运算0==x和x==0详解
- Android开源项目第一篇——个性化控件(View)篇<转>
- JQuery语法
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- 杭电1847 Good Luck in CET-4 Everybody!(博弈)
- 循环和文本输入
- 加州理工学院公开课:机器学习与数据挖掘_线性模型(第三课)
- [电脑小技巧]程序猿教你对付熊孩子动你电脑
- C语言之指针专题二:指针做函数参数是指针存在的最大意义