首页  /  编程问答  /  =和==有什么区别  /  

=和==有什么区别

在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,两者完全等价,但可以避免少写等号的问题,想想为什么?


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


本文固定URL:https://www.dotcpp.com/qa/8

编程杂谈
编程基础
知识答疑