看很多大牛写的程序经常看到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. 细嗅Promise
  2. css代码段
  3. EF封装类,供参考!
  4. Linux下Web服务器环境搭建LNMP一键安装包[20130911更新]
  5. Java的位运算符—— 与(&)、非(~)、或(|)、异或(^)
  6. NodeJs使用Mysql模块实现事务处理
  7. 【HDOJ】3727 Jewel
  8. NGUI类之间的关系和架构
  9. LeetCode_Maximal Rectangle
  10. 深入tornado中的TCPServer
  11. Python当前文件路径与文件夹删除操作
  12. 从不同的角度分析Flex的优缺点
  13. selenium中隐式等待和显示等待的区别
  14. youtube去广告
  15. kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法
  16. 入门 Webpack,看这篇就够了
  17. 2018面向对象程序设计(Java)第4周学习指导及要求
  18. pinyin4j 中文转拼音
  19. Android Dagger 2
  20. BugPhobia开发篇章:Beta阶段第I次Scrum Meeting

热门文章

  1. python 字符编码的两种方式写法:# coding=utf-8和# -*- coding:utf-8 -*-
  2. 证明,为什么HBase在创建表时,列簇是必须要,列可不要?
  3. invoke与call
  4. .net core2.0 中使用log4net
  5. HTML的display属性将行内元素、块状元素、行内块状元素互相转换以及三者的区别
  6. Java关于反射的用法
  7. Python之global
  8. ApplicationLoader登录失败
  9. [luogu 4886] 快递员
  10. [Cerc2007]robotic sort