小朋友学C语言(15):“变量==常量”与“常量==变量”的区别

(一)编写程序

#include <stdio.h>
int main()
{
    int x = 10;
    if(x == 10)
    {
        printf("x equals 10\n");
    }
    return 0;
}

运行结果:

x equals 10

(二)将x == 10改为10 == x

#include <stdio.h>
int main()
{
    int x = 10;
    if(10 == x)
    {
        printf("x equals 10\n");
    }
    return 0;
}

运行结果:

x equals 10

结论: C语言中,x == 10与10 == x的结果是一样的,都是判断x和10是不是相等。相等为真,不相等为假。

(三)假如在编写第一个程序的时候,if中的等号少写了一个,程序变成:

#include <stdio.h>
int main()
{
    int x = 10;
    if(x = 10)
    {
        printf("x equals 10\n");
    }
    return 0;
}

运行结果:

x equals 10

虽然运行结果是对的,但是逻辑上已经不一样了。这里是两次把10赋值给x,然后再判断x是否为真。

(四)如果第2个程序中漏打了一个等号,程序变为

#include <stdio.h>
int main()
{
    int x = 10;
    if(10 = x)
    {
        printf("x equals 10");
    }
    return 0;
}

编译出错 ,这是因为,C语言中,只允许把常量赋值给变量,不允许把变量赋值给常量。常量不能被赋值。

结论:建议写成10 == x,不要写成x == 10。这样一旦漏打了一个等号,编译器报错,程序员可以立马修改。

(五)看看x = 0的情景

#include <stdio.h>
int main()
{
    int x = 0;
    if(x == 0)
    {
        printf("x equals 0\n");
    }
    else
    {   
        printf("x not equals 0\n");
    }
    return 0;
}

运行结果:

x equals 0

(六)假如第5个程序中,程序员因粗心漏打了一个等号,程序变为

#include <stdio.h>
int main()
{
    int x = 0;
    if(x = 0)
    {
        printf("x equals 0");
    }
    else
    {
        printf("x not equals 0");
    }
    return 0;
}

运行结果

x not equals 0

分析:原本x与0是相等的,但是因为这里少打了一个等号,导致两次都是赋值操作,x为0,if里的判断条件为假,得出了x不等于0的错误结论。

结论: 当少打一个等号的时候,写成“常量 == 变量”编译不成功,这样程序员可以立马发现少打了一个等号。; 尤其是在变量为0的情况下,可以避免写成if(变量 = 0)而得到相反的结论。

建议: 写程序时一律写成if(“常量 == 变量”),比如if(10 == x) 不要写成if(“变量 == 常量”),比如if(x == 10)

(七)作业 默写上面程序中的任何一个。

原文发布于微信公众号 - 海天一树(gh_de7b45c40e8b)

原文发表时间:2017-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

python 字典操作提取key,value

python 字典操作提取key,value dictionaryName[key] = value 1.为字典增加一项 ? 2.访问字典中的值 ...

48350
来自专栏Python小屋

详解Python序列解包

序列解包(Sequence Unpacking)是Python中非常重要和常用的一个功能,可以使用非常简洁的形式完成复杂的功能,大幅度提高了代码的可读性,减少了...

41270
来自专栏天天

作用域

9330
来自专栏图像识别与深度学习

2018-06-30 Python numpy

9930
来自专栏web前端教室

var a="xx";a=a+"ss";a的值变了,但"xx"字符串并没有变

如题目所示, var a="xx"; a=a+"ss"; console.log(a); //xxss 一般情况下,我们就可以认为此时a的值,由'xx'变成了'...

21680
来自专栏coding

python实用技巧:在列表,字典,集合中快速筛选数据

23850
来自专栏用户2442861的专栏

剑指offer 33 把数组排成最小的数

转载请注明出处:http://blog.csdn.net/ns_code/article/details/28128551

13220
来自专栏软件测试经验与教训

Python学习笔记(七)

36580
来自专栏Python

python2/3 中删除字典中value为空的键值对方法

只是在for循环中,相当于对链表的操作,它会自动调用next方法! 字典的迭代器会遍历它的键,在这个过程中,不能改变这个字典!不能删除、添加数据 要先记录要删...

24830
来自专栏大愚Talk

我对变量产生了这些想法

最近在学习Golang的过程中,发现一个有意思的事情,有的文章说函数调用传参时 slice 是引用传递,有的说是值传递。为什么同一个东西大家会不同认识?为了搞清...

9910

扫码关注云+社区

领取腾讯云代金券