首页 > 试题广场 >

有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但

[问答题]

有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但不能达到预期结果。请分析程序能够通过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个分支。

发表于 2018-05-07 11:14:52 回复(0)