c语言中for(i = 1;i<10;++i)和for(i = 1;i<10;i++)有区别么?我试了一下,对运行结果没影响
答案:5 悬赏:20 手机版
解决时间 2021-11-16 01:26
- 提问者网友:你挡着我发光了
- 2021-11-15 05:54
c语言中for(i = 1;i<10;++i)和for(i = 1;i<10;i++)有区别么?我试了一下,对运行结果没影响
最佳答案
- 五星知识达人网友:行雁书
- 2021-11-15 06:27
效果是一样的,for(i=1;i<10:++i) 是一个结构,并不是一个单一的语句或表达式
i=1是在循环开始前的初始化, i<10是每次循环开始前的验证, ++i是在一次循环结速后才运行的。
这是,++i和 i++都作为一个语句来用,那么基本上没区别了,旧的编译器可能会给出效率不同的编译结果,但现在的编译器,可能只是把它转为 i = i+1来执行了,区别只是这一句插在原语句的前面还是后面,而++i作为单语句,那就是
i += 1;
i;//拿去用
而i++是
i;//拿去用
i+=1;
对于这个for循环,要的都是i 自增,所以没区别
i=1是在循环开始前的初始化, i<10是每次循环开始前的验证, ++i是在一次循环结速后才运行的。
这是,++i和 i++都作为一个语句来用,那么基本上没区别了,旧的编译器可能会给出效率不同的编译结果,但现在的编译器,可能只是把它转为 i = i+1来执行了,区别只是这一句插在原语句的前面还是后面,而++i作为单语句,那就是
i += 1;
i;//拿去用
而i++是
i;//拿去用
i+=1;
对于这个for循环,要的都是i 自增,所以没区别
全部回答
- 1楼网友:迟山
- 2021-11-15 10:03
for(i = 1;i<10;++i)和for(i = 1;i<10;i++),这里面i的都是一样,没区别,区别的是i++,和++i的值不一样。
- 2楼网友:何以畏孤独
- 2021-11-15 08:45
i++(在使用i之前先使i+1);++i在使用I后i再加1;
例如i=3;
printf("%d",++i);
输出结果是4;
若改为
printf("%d",i++);
输出结果是3。追问谢谢 明白了
例如i=3;
printf("%d",++i);
输出结果是4;
若改为
printf("%d",i++);
输出结果是3。追问谢谢 明白了
- 3楼网友:千杯敬自由
- 2021-11-15 08:15
++i是i自增1再去用i i++是先用i的值再将i自增1
他们两者对于独立的语句无区别如:
++i; 和 i++;是一样的
但a=++i和a=i++就不同
若i的值为12,则a=++i的a值为13 a=i++就是a=12
for(i = 1;i<10;++i)
{语句1;}
等同于:
1、i=1;
2、判断i<10,若不成立就退出循环
3、语句1;
4、++i; 此为独立的一个语句,并没直接用i的值(在下一个语句才判断i的值)
5、回到第二步追问谢谢 明白了
他们两者对于独立的语句无区别如:
++i; 和 i++;是一样的
但a=++i和a=i++就不同
若i的值为12,则a=++i的a值为13 a=i++就是a=12
for(i = 1;i<10;++i)
{语句1;}
等同于:
1、i=1;
2、判断i<10,若不成立就退出循环
3、语句1;
4、++i; 此为独立的一个语句,并没直接用i的值(在下一个语句才判断i的值)
5、回到第二步追问谢谢 明白了
- 4楼网友:長槍戰八方
- 2021-11-15 06:51
没区别一样的。
因为for循环条件测试的顺序是这样的:
先执行,第一个分号前的初始化语句(可能没有),只会执行一次。立马执行第二个条件测试语句,如果为真进入循环体执行代码。
代码执行完成后,先执行第二个分号后的语句,然后测试第一个分号后的条件语句。
通过上面过程,无论是++i,还是i++他两的值均是已经被+1后进行的测试。
因此是等效的。
个人习惯写那种方式。
因为for循环条件测试的顺序是这样的:
先执行,第一个分号前的初始化语句(可能没有),只会执行一次。立马执行第二个条件测试语句,如果为真进入循环体执行代码。
代码执行完成后,先执行第二个分号后的语句,然后测试第一个分号后的条件语句。
通过上面过程,无论是++i,还是i++他两的值均是已经被+1后进行的测试。
因此是等效的。
个人习惯写那种方式。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯