我们都知道,i++是让i先赋值再自增1,那么有一个题如果要你输出for循环里i++的值,你会不会患错呢?
我们通过一个题来检验便知:
(题目来源取自于中国大学慕课网--翁恺--C语言程序设计--第五周5.1小测验)https://www.icourse163.org/learn/ZJU-9001?tid=9001#/learn/content?type=detail&id=76002&cid=88028
以下代码段的输出是什么?
for ( int i=10; i> 1; i /=2 )
printf("%d ", i++);
相信初学者一定会有个这样稀奇古怪的想法:第一次进入循环它是打印的i++这两步做完以后的值,也就是11.
但是,你会发现参考答案第一个确实10,为什么呢,难道他是输出的i的值,然后再加1吗?
为此,我们通过上机实验来检验。
#include <stdio.h>
main()
{
for(int i = 10; i > 1;i /= 2)
printf("%d\n",i);
printf("%d\n",i++);
printf("====================");
}
上机操作后,无论是i打印出的值还是i++打印出的值,所以可以验证猜想。