(*(a+i++)>0的正确解释是这样的:首先是求*(a+i)的东西,因为i++,++是在后面的,所以先取值后加1.*(a+i)即a此时i已经是加1后的值了.然后判断a是否大于0,是则停止循环.这句话把递增和判断都放在一起了.比较通俗的话可以这样写:do{ //代码 i++;}while( a[i-1] > 0 ); //因为i已经加过1了,请注意这里不能用i--或者while( a[ i ] > 0 ){ //代码 i++;}当然,如果a[0]就不满足>0的话,两者是有区别.do while会多做一次代码,while什么都不会做.这样的话,就只能用do while了.
|