求助for循环i++和++i结果相同,没想明白
SIE16兔子生育我自己写的代码求助 为什么i++,++i结果相同?++i不应该少循环一次吗?
#include<stdio.h>
int main()
{
int one=1,adult=0,temp=0,sum=0,i;
for(i=2;i<=24;++i)
{ temp=adult;
adult=adult+one;
one=temp;
}
sum=adult+one;
printf("%d",sum);
return 0;
} //for(i=2;i<=24;++i)
上行的++i;相当于单行;
所以,对于i++;来说无区;
当:
int i,j,k = 0 ;
int j = ++i ;
int k = i++ ;
cout<< j<< " "<<k<<endl;
上面两行对比时,它位不一样,此时输出的是什么,值得一试。
我想,你说应当少循环一次,应当是一个运算符优先级的疑问吧。
不知道是不是这个思路 本帖最后由 墨羽岚 于 2020-4-6 11:52 编辑
你 i 是每次循环后加1,++i 和 i++没区别
i++就是上一次循环结束时i 不变,判断时+1;
++i 就是上一次循环结束时+1,判断时不变 howzyao 发表于 2020-4-6 11:48
//for(i=2;i
我想for(i=1;i<=24;++i)为什么不等于for(i=2;i<=24;i++)呢 墨羽岚 发表于 2020-4-6 11:50
你 i 是每次循环后加1,++i 和 i++没区别
i++就是上一次循环结束时i 不变,判断时+1;
++i 就是上一次循 ...
比如第一次循环完,i++是不是比++i小1,而且应该是循环语句之前就把本轮循环的i值改变了吧 八块腹肌的胖子 发表于 2020-4-6 11:55
比如第一次循环完,i++是不是比++i小1,而且应该是循环语句之前就把本轮循环的i值改变了吧
你可以写两个循环,一个是i++,另一个是++i
然后打印i的值 qiuyouzhi 发表于 2020-4-6 12:00
你可以写两个循环,一个是i++,另一个是++i
然后打印i的值
谢谢,我试了一下,请问如果i=1,++i为什么循环第一轮打印出还是1,++i不应该第一次就要加1吗{:5_100:} 其实你可以这样想,最后一句自增语句写在循环体里面,那无论是 ++i还是i++都不影响循环体判断,因为要先进行判断再进行自增运算
这个时候你在把最后一句自增语句放在 for()里面,你就可以知道,第三句的执行并不影响第二句的判断,无论++在前在后,i 都在循环体里面,判断的时候已经执行完了自增语句
这跟while(++i)和while(i++)是不一样的,这里的判断就是要看++的位置来判断优先顺序了,同理do while也一样
页:
[1]