问题 单项选择题

有以下程序:
main()

int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2)

执行后输出结果是( )。

A.2

B.3

C.4

D.编译时有错,无结果

答案

参考答案:B

解析: C语言规定else总是和离它最近的if语句配对。故第一个else和第一个if配对,第二个else和第二个if配对。首先计算第一个if后面的表达式a>b>c,表达式a>b为1,表达式1>c为0,所以执行else后面的语句。先执行if后面的表达式,c-1>d为真,值为1。1=1为真,执行primf语句。所以,B选项为所选。

名词解释
判断题