赞
踩
这两个符号,在不严格的情况下,都可以读成“等于”,但是两个“等于”在程序中有完全不同的⽤法。错误使⽤将导致程序⽆法得出正确的结果,⽽且有时没有错误提⽰。 那么,怎样正确区分这两个运算符呢?
这两个符号⼀个是赋值运算符“=”,另⼀个是关系运算符或称⽐较运算符“==”,表示相等。
有些⽼师讲课时会特别强调读法,“a=b”读作“将b赋值于a”,“a==b” 读作“a 等于b”,但⼤多数学⽣⾃⼰读的时候都是统统读成“a等于b”,只有发⾔时才强制⾃⼰读“赋值”的。
关系运算符“==”与习惯思维的等于相同。以“a==b”为例,是看a与b是否相等, 要得到结论,成⽴或不成⽴,应⽤在条件中“如果a与b相等,去做某⼀操作”对应程序就是 if(a==b)......
⽽ "="是个赋值运算符。"a=b"是“将b的值赋于"a",或称"让a的值等于b的值"。 注意,此时a的被改变,将要造成⼀个即成事实。⽽“a==b〞是看a与b是否相等,a的值不被改变。在程序中⽤的最多的就是"="
下⾯分析两个错误的⽤法。
- #include <stdio.h>
- int main()
- {
- int a, b;
- a = 3;
- b = 4;
- if (a = b)
- {
- printf("相等");
- }
- else
- {
-
- printf("不等");
- }
- return 0;
- }
上⾯程序显⽰的是“相等”还是“不等”呢?不要不假思索地回答“不等”,应该是 “相等”。
上⾯程序可理解为:如果条件“a=b”成⽴,就显示“相等”,不成⽴就显示“不相等”。那这个条件怎么可能是成⽴的呢。“将b的值赋于a”,注意不是“a是否等于b”。
“将b的值赋于a”算是什么条件呢,这就要理解C 语⾔中什么是“真”,什么是“假”,赋值表达式的值这两个概念。
- C语⾔规定:
-
- (1)语⾔中没有专门的逻辑值,任何数据都可以表⽰逻辑值,规定0 是假,除0外的任何其他数都是真。
-
- (2)赋值表达式的值就是变量的值。
因此,赋值表达式 a=b 的值是3,再将3⽤在条件中,当成逻辑值去理解,结果是真。 因此,上⾯程序的执⾏结果显示“相等”。
这样的程序在编译时系统会给出⼀个警告信息。如果不理会警告,再编译⼀次,就成功通过了。
区分=和==的应⽤领域,这是⼀个基本问题,⽤的多了,⾃然也就会了。但要理解⼀个莫名其妙的程序的执⾏结果,有时⽤到很多C语⾔的细节知识。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。