int k=0;while(k++<=2) printf("%d\n",k);的结果是1 2 3?和int k=0;while(k++<=2);printf("last=%d\n",k

)的结果是4?怎么区分它们的结果,求高手指点!!

while(k++<=2) printf("%d\n",k); 是循环语句,循环体是 printf("%d\n",k);
k++ 是后缀加,也就是在表达式里先用当前值,用过后再增1。
k++<=2 当 k=0,1,2 时做循环体,执行循环体三次 printf("%d\n",k); 里的 k 是增1后的k, 打印出 1,2,3。k++ 变 3 时 退出循环。退出循环后 k=4。由于没有后续打印语句,没显示出k=4的结果。

while(k++<=2); 有分号,虽 是循环语句,但循环体是空。
k=0,1,2 时做循环体,当前值 k=3 时 退出循环。由于k++ 是后缀加,退出循环后增1,变4。
后续是个打印语句 printf("last=%d\n",k);打印出 last=4.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-03
while语句后面只能跟一个语句或者花括号括起来的语句块作为循环体。
你这段代码都是一个语句的情况
while(k++<=2) printf("%d\n",k); 循环体的语句就是那个printf
while(k++<=2);printf("last=%d\n",k); 注意括号后面的那个分号,那才是while的循环体,只有一个分号即一个空的语句。所以这个是等while循环完毕后再输出的。

为什么是4:循环的条件情况如下(k++返回的是k的原值,然后再加1)
第1次:k++<=2 真,执行之后k == 1
第2次:k++<=2 真,执行之后k == 2

第3次:k++<=2 真,执行之后k == 3

第4次:k++<=2 假(退出循环),执行之后k == 4

所以输出的是4
第2个回答  2013-03-03
while语句后面有分号说明只输出循环后的结果,没有分号说明要输出每一次循环中的结果

采纳我哦
相似回答