来自 新葡8455操作系统 2020-01-19 17:16 的文章
当前位置: 新葡棋牌京官网app > 新葡8455操作系统 > 正文

为什么要写成if而不是if

看郝斌老师的视频,经常会提示if(1==i)要比if(i==1)规范。虽然照做却并不知其所以然。今天偶然看到坛友在一篇回复中谈及此问题,恍然大悟

/*澳门新葡8455最新网站,时间:2011年9月20日11:02:56*/
# include <stdio.h>
void main()
{
    int i;
    if (i=0)                //当if后面括号里的是类似赋值语句的表达式时,if判断的是赋值后,等号左边的变量是否为真
        printf("i=0n");    //这里 赋值为0,等号左边的i变量为假,所以,printf语句不会执行
    if (i=1)                
        printf("i=1n");    //当被赋值为1时,i变量为真,这里会输出i=1
    if (i=2)                
        printf("i=2n");    //当然,被赋值为其余非0的数时,i变量也为真,这里会输出i=2
    if (i=2)                //这里还有个问题,i是不是真的被赋值了呢?
        printf("i=%dn",i);    //这里也输出了i=2,说明i确实被赋值了
    if (i==2)                //其实大多数情况下,我们实际想真正判断的是i是否等于2的情况,所以需要特别注意==与=的区别
        printf("i=%dn",i); //这里因为之前的语句,i确实被赋值为了2,所以本条语句会执行,输出i=2
    if (2==i)                //终于到这种写法了,郝斌老师视频里经常提示的规范写法
        printf("i=%dn",i);
//    if (2=i)                //为什么要写成上面那样呢,就是因为这样写如果不小心漏掉一个=,编译时会报错error C2106: '=' : left operand must be l-value
        printf("i=%dn",i);                    
}

原帖地址: 第10楼

本文由新葡棋牌京官网app发布于新葡8455操作系统,转载请注明出处:为什么要写成if而不是if

关键词: