ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
对同一变量多次赋值在C++里是合法的,这一点之前并没有多说。第二次赋值的效果是用新值替换掉旧值。 ~~~ int fred = 5; cout << fred; fred = 7; cout << fred; ~~~ 这段代码输出57,因为第一次打印fred时,其值是5;第二次打印时其值为7。 这种**多次赋值**的机制正是我把变量形容为值的*容器*的原因。在为变量赋值时,修改的是容器里的内容,如图所示: ![enter image description here](https://box.kancloud.cn/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的值,所以二者不再相等。在很多编程语言中,为避免混淆,赋值用另一种符号代替,如<-或:=。 尽管多次赋值非常有用,但尚需谨慎使用。如果变量的值在程序的不同部分总是在改变,代码就会非常难以阅读和调试。