黑马程序员技术交流社区
标题:
while空语句问题
[打印本页]
作者:
蓝海悦
时间:
2015-6-20 17:26
标题:
while空语句问题
#include <stdio.h>
int a = 0;
int main(int argc, const char * argv[]) {
while (a++ < 2);
printf("%d\n",a);
return 0;
}
复制代码
为什么输出结果不是2, 而是3???
作者:
晗修
时间:
2015-6-20 18:46
确实是3 空语句的话 当a++
表达式
的值为2的时候停止循环 a的值会在计算完表达式+1 然后变成3
如果printf在循环体内部 那么就是2
作者:
kalon
时间:
2015-6-20 20:32
a++,++a(表达式的值)<a的值
作者:
天下1083
时间:
2015-6-20 20:52
a++是先取a的值作为表达式的值然后在++
作者:
天下1083
时间:
2015-6-20 20:57
循环到a=1时a++的值是1<2这是a的值加1,此时a等于2,
再循环时,a++的值是2=2,所以循环不继续,输出时a=2
作者:
萤火虫小oneone
时间:
2015-6-20 21:40
不管是a++,还是++a,最后a的值都需要+1的,只不过一个是先把a的值赋值,一个是把加完的值赋值
作者:
白0702
时间:
2015-6-20 22:43
一楼解释的有道理,围观学习
作者:
DemonPeter
时间:
2015-6-20 23:05
while (a++ < 2)
; 1.这是一个空语句 while不包括printf在内
printf("%d\n",a); 2.当运行到a=2时,判断(a++<2)为“假”所以跳出while 这里a++是进行了一次最后的 判断的
3.当运行到下一步prinft时,a++是要起作用的 使得a=3
作者:
pp584995727
时间:
2015-6-22 22:41
a++表达式的值为2才可能退出循环,所以a自加一次,a就等于3,所以打印的值是3
作者:
丁铭检
时间:
2015-6-23 09:58
看着你的技术分,我很怀疑你是来抽贴的。。
作者:
pp584995727
时间:
2015-6-23 22:08
while循环退出的条件是a++表达式的值是2,当循环退出时a的值还会自加一次,所以最后打印的值是3
作者:
星期九
时间:
2015-6-24 11:01
因为你的while里面的约束条件是a++ <2 所以当你的a在执行完一次后的a的值变成了 1 然后2次时候a为2次是不满足while的约束了 虽不满足但还是完成了一次a++ 和8楼说的差不多
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2