小朋友学C语言(15):“变量==常量”与“常量==变量”的区别
原创
©著作权归作者所有:来自51CTO博客作者海天一树2022的原创作品,请联系作者获取转载授权,否则将追究法律责任
(一)编写程序
#include <stdio.h>
int main()
{
int x = 10;
if(x == 10)
{
printf("x equals 10\n");
}
return 0;
}
运行结果:
(二)将x == 10改为10 == x
#include <stdio.h>
int main()
{
int x = 10;
if(10 == x)
{
printf("x equals 10\n");
}
return 0;
}
运行结果:
结论:
C语言中,x == 10与10 == x的结果是一样的,都是判断x和10是不是相等。相等为真,不相等为假。
(三)假如在编写第一个程序的时候,if中的等号少写了一个,程序变成:
#include <stdio.h>
int main()
{
int x = 10;
if(x = 10)
{
printf("x equals 10\n");
}
return 0;
}
运行结果:
虽然运行结果是对的,但是逻辑上已经不一样了。这里是两次把10赋值给x,然后再判断x是否为真。
(四)如果第2个程序中漏打了一个等号,程序变为
#include <stdio.h>
int main()
{
int x = 10;
if(10 = x)
{
printf("x equals 10");
}
return 0;
}
编译出错 ,这是因为,C语言中,只允许把常量赋值给变量,不允许把变量赋值给常量。常量不能被赋值。
结论:建议写成10 == x,不要写成x == 10。这样一旦漏打了一个等号,编译器报错,程序员可以立马修改。
(五)看看x = 0的情景
#include <stdio.h>
int main()
{
int x = 0;
if(x == 0)
{
printf("x equals 0\n");
}
else
{
printf("x not equals 0\n");
}
return 0;
}
运行结果:
(六)假如第5个程序中,程序员因粗心漏打了一个等号,程序变为
#include <stdio.h>
int main()
{
int x = 0;
if(x = 0)
{
printf("x equals 0");
}
else
{
printf("x not equals 0");
}
return 0;
}
运行结果
分析:原本x与0是相等的,但是因为这里少打了一个等号,导致两次都是赋值操作,x为0,if里的判断条件为假,得出了x不等于0的错误结论。
结论:
当少打一个等号的时候,写成“常量 == 变量”编译不成功,这样程序员可以立马发现少打了一个等号。;
尤其是在变量为0的情况下,可以避免写成if(变量 = 0)而得到相反的结论。
建议:
写程序时一律写成if(“常量 == 变量”),比如if(10 == x)
不要写成if(“变量 == 常量”),比如if(x == 10)
(七)作业
默写上面程序中的任何一个。
更多内容请关注微信公众号