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?怎么区分它们的结果,求高手指点!!... )的结果是4?怎么区分它们的结果,求高手指点!! 展开
 我来答
金色潜鸟
推荐于2018-04-05 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5749万
展开全部
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.
jackwind1987
2013-03-03 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:496万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tian435
2013-03-03 · TA获得超过1219个赞
知道小有建树答主
回答量:835
采纳率:0%
帮助的人:214万
展开全部
while语句后面有分号说明只输出循环后的结果,没有分号说明要输出每一次循环中的结果

采纳我哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式