在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
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程