C语言中
do while 循环 中i++ 和++i的循环结果不一样,可以理解i++为先判断i的值,输出i+1的赋值
do
{
printf("%d\n",i);
}
while(++i<10);
do
{
printf("%d\n",i);
}
while(i++<10);
两段输出分别为 :0 ~ 9 和 0 ~ 10
而
for(i=0;i<10;i++)
{
printf("count is %d\n",i);
}
无论是i++还是++i,其输出都是0~9
一直想不明白,这是为啥,求解答。
在for循环中,你可以认为它是等价的
int i = 0;
while( i < 10) {
printf("%d", i);
i++; // 这里是单独的一行,无论是i++/还是++i,这一行之后i的值都自增了。而在你上面的while循环中,i++和++i是要考虑判断后取值还是取值后判断
}
while(++i<10); 括号里是复合语句,拆分为:(++i, i < 10) i 先自加,再比较
while(i++<10); 括号里是复合语句,拆分为:(i++, i < 10) i 先比较,再自加
for(i=0;i<10;i++) 里 i++; 或 ++i; 是单独成句,++ 在前 或 在后没有区别。
在a=i++和a=++i里,因为涉及到对a赋值到底在i++之前还是之后,当然会有区别
而如果单独执行i++和++i当然就没有区别
while(i++)相当于while(a=i++),到底是先取值还是先赋值就跟++在前还是在后有关系
而for里的i++是个单独的语句
for(i = 1, i < n, i++) VS for(i = 1, i < n, ++i),运算结果相同,运算时间不同。
for循环中 i++与++i | i++ | ++i |
---|---|---|
运算结果 | 相同 | 相同 |
运算时间 | 长 | 短 |