有以下程序: #include<iostream> using namespace std; int main( ) { int a=5;b=4,c=3,d=2; if(a>b>c)

admin2010-03-29  26

问题 有以下程序:     #include<iostream>     using namespace std;     int main(  )     {        int a=5;b=4,c=3,d=2;        if(a>b>c)             cout<<d<<end1;        else if((c-1>:d) ==1)             cout<<d+1<<end1;        else             cout<<d+2<<end1;        return 0;    }    执行后的输出结果是(    )。

选项 A、2
B、3
C、4
D、编译时有错,无结果

答案2

解析 表面上看,本题很容易得到答案。其实不然,出题者在题中隐藏了一个陷阱。粗心的读者可能会想当然地认为if语句中的条件表达式“a>b>c”成立(因为 a=5,b=4,c=3)。然后执行if后面的语句,就得到错误答案A。
   要想正确解答本题,先来了解关系运算符的一些知识:在C++语言中,true(真)是不为0的任何值,而false(假)是0。在使用关系运算符和逻辑运算符的表达式时,若结果为true(真),则返回1;若结果为false(假),则返回的是0。根据以上知识分析程序:第1步,判断if后面的条件表达式(a>b>C) 是否成立。根据运算符的结合性,先计算表达式a>b,因为a=5,b=4,所以可得到答案true,其返回值为1。再计算表达式1>c,由于c=3,所以可得到答案为false(假),其返回值为0。因此if后面的条件表达式不成立,继续下面的条件判断。第2步,计算else if后面的条件表达式((c-1>=D) ==1),把c=3,d=2代入此条件表达式,可得到答案为true,此条件表达式成立,故执行else if后面的语句,输出结果为3。
转载请注明原文地址:https://kaotiyun.com/show/wFjp777K
0

最新回复(0)