
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<0\n");}在上面的代码中,if 语句的本意是将变量 y 的值赋给变量 x,然后再判断变量 x 的值是否小于 0。如果变量 x 的值小于 0,就执行语句 printf("y<0\n")。由于错误地将赋值 *** 作符“=”误写成等于 *** 作符“==”,所以无论变量 y 为何值,都不会执行语句 printf("y<0\n")。原因是等于 *** 作符“==”的结果只能是 0 或 1,永远不会小于 0。除此之外,为了防止将等于 *** 作符“==”误写成赋值 *** 作符“=”,还可以在代码中采用如下形式:
int x=0;if(0==x){}这样,就可以在一定程度上避免误写的发生。 总结 以上是内存溢出为你收集整理的=与==的区别,C语言=与==的区别详解全部内容,希望文章能够帮你解决=与==的区别,C语言=与==的区别详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)