为什么要写成if(1==i)而不是if(i==1)

作者在 2012-02-24 14:59:04 发布以下内容
看郝斌老师的视频,经常会提示if(1==i)要比if(i==1)规范。虽然照做却并不知其所以然。今天偶然看到坛友在一篇回复中谈及此问题,恍然大悟
/*时间:2011年9月20日11:02:56*/
# include <stdio.h>
void main()
{
    int i;
    if (i=0)                //当if后面括号里的是类似赋值语句的表达式时,if判断的是赋值后,等号左边的变量是否为真
        printf("i=0\n");    //这里 赋值为0,等号左边的i变量为假,所以,printf语句不会执行
    if (i=1)                
        printf("i=1\n");    //当被赋值为1时,i变量为真,这里会输出i=1
    if (i=2)                
        printf("i=2\n");    //当然,被赋值为其余非0的数时,i变量也为真,这里会输出i=2
    if (i=2)                //这里还有个问题,i是不是真的被赋值了呢?
        printf("i=%d\n",i);    //这里也输出了i=2,说明i确实被赋值了
    if (i==2)                //其实大多数情况下,我们实际想真正判断的是i是否等于2的情况,所以需要特别注意==与=的区别
        printf("i=%d\n",i); //这里因为之前的语句,i确实被赋值为了2,所以本条语句会执行,输出i=2
    if (2==i)                //终于到这种写法了,郝斌老师视频里经常提示的规范写法
        printf("i=%d\n",i);
//    if (2=i)                //为什么要写成上面那样呢,就是因为这样写如果不小心漏掉一个=,编译时会报错error C2106: '=' : left operand must be l-value
        printf("i=%d\n",i);                    
}
默认分类 | 阅读 1387 次
文章评论,共0条
游客请输入验证码
浏览11296次
文章分类
文章归档
最新评论