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)
{
}
这样,就可以在一定程度上避免误写的发生。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有