有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但不能达到预期结果。请分析程序能够通过C++编译而不能得到期望结果的原因。
#include<iostream> using namespace std; int main() { int a,b; cout<<"a: "; cin>>a; cout<<"b: "; cin>>b; if( a=b ) cout<<a<<"等于"<<b<<endl; else cout<<a<<"不等于"<<b<<endl; }
运行程序,输入a的值为4,b的值为9,显示结果如下:
a: 4
b: 9
9等于9
在if语句的判断表达式(a=b)中,赋值号“=”应该是逻辑等“==”。从语法上,C++的if语句把a=b这个赋值表达式视为逻辑表达式,没有编译错误。a=b的值决定于b。若b的输入值不等于0,if语句的判断表达式作为逻辑真(true),否则作为逻辑假(false)。所以,题目中输入b的值虽然不等于a,但表达式a=b为逻辑true,执行了if语句的第1个分支。