for(int i=1;i++<4;)这句话为什么等价于for(int i=2;i<5;i++)

求解答,后天就考试了,这个真心不懂

i++是后置运算符,表示i先参加运算在加一

for(int i=1;i++<4;)的执行顺序是:
i=1;
i<4;
i+1;
由此可看出此语句等同于for(int i=1;i<4;i++),表示i执行三次循环
而for(int 1=2;i<5;i++),i也是执行三次循环
所以相互等价于
望采纳!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-13
你好,
前一个for起始i=1,在(i++<4)这里,i已经先加1了,所以循环到int i后,它是先+1然后再与4比较大小。
后一个for就是正常写法了,楼主应该理解,i=2,先比较大小,然后再+1,走完for下面的循环再拿+1后的i再和5比较大小。
第2个回答  2018-04-13
for(int i=1;i++<4;) 和 for(int i=2;i<5;i++)
一般情况下是不等价的。
只有在循环体中不包含 i 的情况下,它们才是等价的(都是执行循环体3次)
前者是i=1,2,3进行循环,
后者是i=2,3,4进行循环。本回答被网友采纳
第3个回答  2014-06-25
你这代码 输出值的地方 你确定是c 或者 c++里面的?不是吧 即使是 你的用法也可能是错误的!
改下:条件一样 输出的是 i的值
#include
using namespace std;
int main(){
for(int i=0;i<6;i++){
int k=++i;
while(k<5){
cout<<i<<"\t";
k+=2;
}cout<<endl;
}
return 0;
}
输出结果是 1 1
3
:解释
第一次循环
i=0; 然后赋值给k的时候 执行的语句 int k= ++i; 这里 i先自加 i就等于1了 然后赋值给k,k也等于1;
因为k=1 小于5 执行 while 语句 输出i 即是 输出1;
然后 执行k+=2;只是复合赋值语句等同于 k=k+2; k变成了 3 还是小于5 再输出 i 第二个1 ; 在又执行k+=2; k=5了 不小于5 while 循环结束

第二次 for循环
回去执行for 语句的最后一句 i++ 执行完以后 i=2了;是小于6的 执行for循环里面的语句 int k=++i;与上面语法一样 执行完这句 i=3 k=3;
判断while 成立 输出 3 执行k+=2 ;k=5 不满足条件k<5;while结束
第三次for 循环
执行for 里面的 i++ ;i=4 i小于6
执行 int k=++i; i=5,k=5;不执行while 不输出i ;执行for 里面的i++ ;i=6
不满足i小于6 for 结束 全部结束;
第4个回答  2018-04-13
#include<stdio.h>void main(){ int i;for(i=1;i++<4;); //for后面分号(;)结束,说明i是在这里变化的。
//i++<4,这句是关键,i初始化为1,一遍循环后,i=2,满足2<4,又一遍循环i=3,满足3<4,然后i=4,4不满足小于4,但是还是会执行i++的操作,所以最后打印出来i=5.
printf("%d\n",i);

}
#include<stdio.h>
void main()
{
int i;
for(int i=2;i<5;i++) ;
printf("%d\n",i);

}这个相信不用解释了吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网