#include main() { int n=2,k=0; while(k++&&n++>2); printf("%d %d\n",k,n); } 程序运行后的输出结果是

答案是1 2.请高手给出详细讲解。谢谢

首先 while(k++&&n++>2) 语句后面有个 ; 分号,所以printf语句只执行一次。
然后 while的()里面,K初始值是0。k++的返回值是0,k的值变成1。0与任何数执行与操作,都是假。所以n++>2并没有执行,n的值还是2.
执行完while后,k的值是1,n的值是2
所以左后打印结果是 1 2
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-02
输出 0,2;
原因是初始化是K=0;但是while循环里用的k++,k++是先赋值再自增,
如int a =0;
int b = a++;
printf("%d\n",b);//结果是0
a && b 逻辑与,当a为假时,那么整个就为假,而不会去执行b,所以
while()循环里k=0,那么整个条件就为false,n++>2 这条语句不会执行。所以最终结果是
0,2
第2个回答  2012-02-22
while(k++&&n++>2); 这时判断的时候k是0,n是2。

while 先判断k的值,如果成立,就会判断(运行)后没面的值;
因为k为0,所以这个while就结束了,后面的n++就不会运行了。所以循环结束。
结果就是 1,2
第3个回答  2012-02-22
while 里面的判断条件 k++和n++>2
执行第一次的时候 k++为0,不符合条件,直接退出,不执行 n++
所有k=1,n=2
第4个回答  2012-02-22
while检测到K++为0后,&&后面就不做检测了,循环退出,此时n仍然为2,k加了一次变为1。
相似回答