深圳市酒类行业协会:多谢大家

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 11:28:14
9
执行以下的程序段后,m的值是
static int a[]={7,4,6,3,10};
int m,k,*ptr;
m=10;
ptr=&a[0];
for(k=0;k<5;k++)
m=(*(ptr+k)<m)?*(ptr+k):m;
解出的结果是10哦????????怎么得出来的啊???

我一步一步分析
在循环前,ptr的值是数组中的第一个元素,也就是7
还有,你必须了结三目运算符。 “? :”的表达式的意思是,“?”前的是条件,符合执行“:”前的,不符合执行“:”后的。相当于if...else语句。
而且,由于循环内的变量不存在因为循环而发生变化,所以,只需要看循环最后一次的结果就可以了。
最后一次,k等于4,ptr等于7,加起来小于m=10,这样,就会执行m=m这条语句,也就是说,m的值一直没变。