下列程序的输出结果是【 】。 main() { int a[]={2,4,6},*ptr=&a[0],x=8,y,z; for(y=0;y<3;y++) z=(*(ptr+y)<x)?*(ptr+y):x; p

admin2010-05-22  22

问题 下列程序的输出结果是【  】。
   main()
   {
   int a[]={2,4,6},*ptr=&a[0],x=8,y,z;
   for(y=0;y<3;y++)
       z=(*(ptr+y)<x)?*(ptr+y):x;
   printf("%d\n",z);
   }

选项

答案6

解析 条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*(ptr+y)<x)?*(ptr+y:x的值,再赋给变量z。当y=0时,*(prt+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=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。
转载请注明原文地址:https://jikaoti.com/ti/TAI0FFFM
0

最新回复(0)