6.1 多次赋值
最后更新于:2022-04-01 06:20:27
对同一变量多次赋值在C++里是合法的,这一点之前并没有多说。第二次赋值的效果是用新值替换掉旧值。
~~~
int fred = 5;
cout << fred;
fred = 7;
cout << fred;
~~~
这段代码输出57,因为第一次打印fred时,其值是5;第二次打印时其值为7。
这种**多次赋值**的机制正是我把变量形容为值的*容器*的原因。在为变量赋值时,修改的是容器里的内容,如图所示:
![enter image description here](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-01_55e55eda44930.jpg)
当存在对同一变量的多次赋值时,区分赋值语句和判等语句就显得尤为重要。C++使用=符号做赋值操作,因此很容易把诸如a=b这样的语句理解为判等语句。事实不是这样!
首先,相等是可交换的,而赋值不可以。比如,数学上若a=7则7=a,但是在C++里语句a=7;是合法的,7=a则不合法。
此外,数学上的等式永远为真。若现在a=b,则a永远等于b。在C++里,赋值语句可以使两个变量相等,但这两个变量未必总是相等的。
~~~
int a = 5;
int b = a; // 现在a和b相等
a = 3; // a和b不再相等
~~~
第三行改变了a的值,但未改变b的值,所以二者不再相等。在很多编程语言中,为避免混淆,赋值用另一种符号代替,如<-或:=。
尽管多次赋值非常有用,但尚需谨慎使用。如果变量的值在程序的不同部分总是在改变,代码就会非常难以阅读和调试。