帮忙分析道C语言题

来源:百度知道 编辑:UC知道 时间:2024/06/30 12:57:29
21.
(21)有以下程序
#include <stdio.h>
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf("%d %d\n",k,n);
}
程序运行后的输出结果是
A)0 2
B)1 3
C)5 7
D)1 2
麻烦帮忙分析下这道题,答案已经知道了,就是不知道为什么选那个。
请高人详细分析下,谢谢啊

D。
分析如下:
程序执行到 while(k++&&n++>2); 这个语句时,因为 k++ 是先用 k 的值,然后在把 k 加上 1,而在加 1 之前,k=0,这就导致条件 (k++&&n++>2) 为0,不再执行n++>2这条语句。
因此k==1,n==2.

D)1 2

原因请参见
http://baike.baidu.com/view/1083418.htm

有关短路求值的内容。

int n=2
while(k++&&n++>2);
因为n++>2;
是先执行 n>2再自加
所以程序运行后的输出结果是1,3