在C/C++编程中,我们经常会犯分不清=和==的区别,一个等号表示的是赋值运算符,是赋值的作用,由=右边的值给左边。

而两个等号==是关系运算符,表示的是判断两边的数值是否相等,常常出现在if判断中。


下面给结合一个常见的例子来做分析

如有代码:

#include<stdio.h>
int main()
{
    int a=3;
    if(a=5)
    {
        printf("Yes\n");
    }
    else
    {
        printf("No\n");
    }
    return 0;
}

按照作者本人的意思,是想判断a的值是不是5,但是发现在a明显不是5的情况下却总输出Yes,经过很久的排查才发现明显少写一个等号,即应该写成a==5即不会发生这样的问题。最诡异的在于少些一个等号竟然不会报错,原因在于写一个等号时候,编译器把a=5当成5来做真假判断,很明显为真,那么必然执行if里的代码。


小技巧:对于if判断中少写一个等号的问题,大家可以尝试将数字写到左边,变量写到右边即5==a,两者完全等价,但可以避免少写等号的问题,想想为什么?


怎么样,这下能区分一个等号和两个等号的区别了吧!

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)