码迷,mamicode.com
首页 > 其他好文 > 详细

逻辑运算0==x和x==0详解

时间:2014-08-29 18:26:08      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:使用   ar   c   算法   应用   程序   har   不同的   c语言   

看许多大牛写的程序常常看到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值。如果将"=="不小心写成"=",如果按照一般人的写法,我们很难发现错误。而是用大牛的写法,编译器直接报错。


逻辑运算0==x和x==0详解

标签:使用   ar   c   算法   应用   程序   har   不同的   c语言   

原文地址:http://blog.csdn.net/samdy1990/article/details/38926523

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!