c/c++语言开发共享浅谈C语言=与==的区别详解

在 c 语言中,最容易产生混淆的操作符要属“=”与“==”。其中,“=”并不等于符号,而是赋值操作符,如 x=3。除此之外,还可以在一个语句中向多个变量赋同一个值,即多重赋值。例如,在下面代码中把 0

在 c 语言中,最容易产生混淆的操作符要属“=”与“==”。其中,“=”并不等于符号,而是赋值操作符,如 x=3。除此之外,还可以在一个语句中向多个变量赋同一个值,即多重赋值。例如,在下面代码中把 0 同时赋给 x、y 与 z。

  x = y = z = 0;  

相对于只有一个等号的赋值操作符,关系操作符中的等于操作符采用两个等号“==”来表示。正因如此,导致了一个潜在的问题:出于习惯,我们可能经常将需要等于操作符的地方写成赋值操作符,如下面的代码:

  int x=10;  int y=1;  if(x=y)  {    /*处理代码*/  }  

在上面的代码中,if 语句看起来好像是要检查变量 x 是否等于变量 y。实际上并非如此,此时if语句将变量 y 的值赋给变量 x 并检查结果是否为非零。因此,虽然这里的 x 不等于 y,但是 y 的值为 1,if 语句还是会返回真。

当然,当确实需要先对一个变量进行赋值之后再检查变量是否非零时,可以考虑显式给出比较符。示例代码如下:

  int x=10;  int y=1;  if((x=y) != 0)  {    /*处理代码*/  }  

这样,程序的可读性就得到了很大提高。

上面的示例代码详细地阐述了将等于操作符“==”误写成赋值操作符“=”所带来的严重后果。同理,将赋值操作符“=”误写成等于操作符“==”也会带来非常严重的后果。示例代码如下:

  int x=0;  int y=-1;  if((x==y)<0)  {    printf("y<0n");  }  

在上面的代码中,if 语句的本意是将变量 y 的值赋给变量 x,然后再判断变量 x 的值是否小于 0。如果变量 x 的值小于 0,就执行语句 printf(“y<0n”)。由于错误地将赋值操作符“=”误写成等于操作符“==”,所以无论变量 y 为何值,都不会执行语句 printf(“y<0n”)。原因是等于操作符“==”的结果只能是 0 或 1,永远不会小于 0。

除此之外,为了防止将等于操作符“==”误写成赋值操作符“=”,还可以在代码中采用如下形式:

  int x=0;  if(0==x)  {  }  

这样,就可以在一定程度上避免误写的发生。

到此这篇关于浅谈c语言=与==的区别详解的文章就介绍到这了,更多相关c语言=与==内容请搜索<计算机技术网>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网>!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/596088.html

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐