C ++ ::不要混淆分配(=)与平等测试(==)
如果C++更像是BASIC,则下面的代码看起来很简单,并且可以正常编译和运行:
if (a = b)
cout << "a is equal to b.";因为这看起来很无辜,所以它会产生逻辑错误,除非您正在寻找它,否则在大型程序中需要花费数小时才能进行跟踪。(因此,当程序需要调试时,这是我要寻找的第一件事。)在C和C++中,以下内容不是对相等性的测试:
a = b
当然,这是将b的值分配给a,然后求值到所分配的值。
问题是a=b通常不会评估为合理的正确/错误条件-我将在稍后提到一个主要例外。但是在C和C++中,任何数值都可以用作“if”或“while”的条件。
假设a和b设置为0。前面显示的if语句的作用是将b的值放入a;中。则表达式a=b的值为0。值0等于false。因此,a和b相等,但是打印出的东西恰恰是错误的:
if (a = b) //此确保a和b相等...
cout << "a and b are equal.";
else
cout << "a and b are not equal."; //但此图已打印!当然,解决方案是在您需要时使用相等性测试。请注意使用双等号(==)。在条件内这是正确的。
//正确的版本:
if (a == b)
cout << "a and b are equal.";热门推荐
10 毛笔哥哥结婚祝福语简短
11 向国庆送祝福语简短
12 建队节祝福语简短
13 朋友喜得外孙简短祝福语
14 小店营业的祝福语简短
15 餐饮生日祝福语简短独特
16 鲜花英语祝福语卡片简短
17 男朋友暴富祝福语简短
18 婶婶拜年祝福语大全简短