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

admin2010-06-06  68

问题 有以下程序:    #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 O;   

选项 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。
   根据以上知识,第一步来判断if后面的条件表达式(a>b>C) 是否成立,根据运算符的结合性,先计算表达式a>b,因为a=5,b=4,所以可得到答案true,其返回值为 1。再计算表达式1>c,由于c=3,所以可得到答案为false(假),其返回值为0。因此if后面的条件表达式不成立,继续下面的条件判断。第二步,计算else if后面的条件表达式((c-1>=D) ==1),把c=3,d=2代入此条件表达式,可得到答案为true,此条件表达式成立,故执行else if后面的语句,输出结果为3。
转载请注明原文地址:https://kaotiyun.com/show/gqjp777K
0

最新回复(0)