zoukankan      html  css  js  c++  java
  • 逻辑运算0==x和x==0具体解释

    看很多大牛写的程序经常看到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值。

    假设将"=="不小心写成"=",假设依照一般人的写法。我们非常难发现错误。而是用大牛的写法。编译器直接报错。


  • 相关阅读:
    同node上,两个pod通过svc访问不通
    Prometheus基于service自动添加监控
    systemd 服务管理编写
    kubernetes 控制器详解【持续完善中】
    tcpdump抓包工具
    Zabbix日志监控插件
    Spring WebFlux之HttpHandler的探索
    知秋源码解读分享系列
    Spring Framework 5.0.0.M3中文文档 翻译记录 Part I. Spring框架概览1-2.2
    Spring Framework 5.0.0.M3中文文档 翻译记录 introduction
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7132869.html
Copyright © 2011-2022 走看看