下列程序段的运行结果是(   )     求详细解答   

下列程序段的运行结果是(   ) 
   求详细解答
  下列程序段的运行结果是(   ) 
   int x=1234; 
   do
   { 
    printf("%2d",x--); 
   }while(!x) ; 

A、12           B、1234 
C、无           D、死循环

答: B、1234
int x=1234;
do { printf("%2d",x--); }while(!x) ;
do 循环,第一次是无条件进入,这时 x=1234。
进打印语句,输出参数 x--, 是后缀自减1,在表达式中 x 不变,保持 1234,打印出1234,出了表达式再减1成 1233。所以循环语句可以看成:
do {
printf("%2d",x);
x=x-1;
}while(!x) ;
x=1233 大于 0 即真 等于 1。 所以 !x 等于 0, while 循环结束。
(输出格式 %2d 是 输出整型数占2位。但 c/c++语言 另有规定,当给的占位数不够数据用时,按数的实际需要 占位 输出。)
温馨提示:答案为网友推荐,仅供参考