【正确答案】
【答案解析】在弄清这个问题前,先看如下代码:
#include<stdio.h>
int main()
{
int a=5,b=4,c=3;
printf("%d/n",a>b>c);
return 0;
}
程序输出结果:
0
在上例中,a>b>c到底是如何执行的呢?对于这种连续运算,根据优先级,首先进行a>b的比较判断,本例中a>b为真,所以返回值为1,接着比较该返回值与c的大小。因为c的值为3,1>c表达式为假,所以返回值为0。最终的输出为0。
对于赋值运算符,结果又如何呢?以如下程序为例。
#include<stdio.h>
int main()
{
int b,c;
int a=(b=(c=020)&&(1==2));
printf("%d%d%d/n",a,b,c);
return 0;
}
程序输出结果:
0 0 16
在赋值语句中,c=020,因为以0开头的数字一般表示的都是八进制的数值,所以折合成十进制的数为16。根据优先级关系,b的值为(c=020)&&(1==2)的结果,由于c=020是一个赋值语句,所以该赋值语句的返回值为真,即为1,而1==2则为假,返回值为0,所以b的值为0,a=(b=0),因此a的值为0。