A-A+
下列程序的输出结果是【 】。 main() { int a[]={2 4 6} *prt=&
问题详情
下列程序的输出结果是【 】。 main() { int a[]={2,4,6},*prt=&a[0],x=8,y,z; for(y=0;y<3;y++) z=(*(ptr+y<x)?*(ptr+y):x; printf("%dn",z); }
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:6
条件运算符的优先级高于赋值运算符,因此本题先计算关系个表达式(*ptr+y)<x)?(ptr+y):x的值,再赋绐变量z,当y=O时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(pry)=2,所以z=2;当y=1时*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,*((ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。