搜索
bottom↓
回复: 30

c中for(i=0;i<10;++i) 和 for(i=0;i<10;i++) 的区别是什么?

[复制链接]

出0入0汤圆

发表于 2019-6-29 04:45:50 | 显示全部楼层 |阅读模式
答案是没有区别。我蒙在了鼓里好几年。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入984汤圆

发表于 2019-6-29 04:58:39 | 显示全部楼层
本帖最后由 Himem 于 2019-6-29 05:01 编辑

for (A;B;C) {D;}
好比是
A;while (B) {D;C;}

i++和++i不做取值当然结果相同

出0入0汤圆

发表于 2019-6-29 07:01:41 来自手机 | 显示全部楼层
你这样表述我估计会误导人,哈哈。

出0入0汤圆

发表于 2019-6-29 08:08:38 来自手机 | 显示全部楼层
这里无区别

出0入0汤圆

发表于 2019-6-29 08:14:14 | 显示全部楼层
在这个for循环中是没有区别的,

出0入14汤圆

发表于 2019-6-29 08:16:23 | 显示全部楼层
for(i=0;i<10;) {;;++i;}
for(i=0;i<10;) {;;i++;}区别

出0入0汤圆

发表于 2019-6-29 08:16:52 | 显示全部楼层
在这里无区别

出0入0汤圆

发表于 2019-6-29 08:35:20 来自手机 | 显示全部楼层
while(++i)  while(i++)  这个就有区别

出0入0汤圆

发表于 2019-6-29 08:54:22 | 显示全部楼层
i本轮值无用,这里只用到了自加,至于先加还是后加,只要下轮之前加上就ok了

出0入0汤圆

发表于 2019-6-29 09:18:15 | 显示全部楼层
你在for循环里面加个打印i,for结束之后加一个打印i,一切就清晰了

出0入0汤圆

发表于 2019-6-29 09:32:32 | 显示全部楼层
Himem 发表于 2019-6-29 04:58
for (A;B;C) {D;}
好比是
A;while (B) {D;C;}

不错的解释+1

出0入224汤圆

发表于 2019-6-29 10:10:07 来自手机 | 显示全部楼层
单独执行这一条语句的话,两个是没有区别的。

出0入0汤圆

发表于 2019-6-29 11:01:09 | 显示全部楼层
没有区别,在等式里面才有区别吧

出0入0汤圆

发表于 2019-6-29 11:11:17 | 显示全部楼层
我有同事不记得i++和++i的区别,也是经常问,后来我建议他不使用自加运算符了.
都用

i=i+1;

真的,用这个省事多了。

出0入0汤圆

发表于 2019-6-29 11:32:58 | 显示全部楼层
这个只有在同一个表达式里才有区别吧。

出0入4汤圆

发表于 2019-6-29 11:46:34 | 显示全部楼层
应该是一样的,但是if(i++) 和if(++i)是不同的,大学里面学C语言 考计算机二级全是这种题

出55入66汤圆

发表于 2019-6-29 12:21:40 来自手机 | 显示全部楼层
用printf打印出来不就行了?这也问?

出0入0汤圆

发表于 2019-6-29 12:29:59 | 显示全部楼层
在这个表达式里应该一样的,printf一下,计算机考级喜欢出这样的题

出0入0汤圆

发表于 2019-6-29 13:41:50 | 显示全部楼层
在这里没有区别

出0入0汤圆

发表于 2019-6-29 13:59:14 | 显示全部楼层
没有区别,i++;  ++i;  执行后,i在下一次都是一样的

出0入442汤圆

发表于 2019-6-29 15:48:35 来自手机 | 显示全部楼层
Alimy 发表于 2019-6-29 11:11
我有同事不记得i++和++i的区别,也是经常问,后来我建议他不使用自加运算符了.
都用


哈哈。编译器会优化成inc。不过riscv里面就没有inc指令了。需要变成ori ra,r0,1,然后再加。。所以要用2条指令

出0入0汤圆

发表于 2019-6-29 16:02:08 | 显示全部楼层
本帖最后由 Alimy 于 2019-6-29 16:03 编辑
wye11083 发表于 2019-6-29 15:48
哈哈。编译器会优化成inc。不过riscv里面就没有inc指令了。需要变成ori ra,r0,1,然后再加。。所以要用 ...


具体到汇编实现的事我就没管了,编译器这点优化的事都干不了那就不是牛人们写的编译器了,哈哈哈。



要 i 的值就在i=i+1之前取i的值,要i+1的值就用i=i+1之后i的值,绝壁不会错。

出0入442汤圆

发表于 2019-6-29 16:34:26 | 显示全部楼层
Alimy 发表于 2019-6-29 16:02
具体到汇编实现的事我就没管了,编译器这点优化的事都干不了那就不是牛人们写的编译器了,哈哈哈。

话说gcc现在的优化真的很牛X了。8.3版本用Os和lto编译比8.2版本代码量能小1%,速度快1%,很了不得了。要知道每提高一点点都很不容易。

不过,编译器的一个比较大的毛病就是寄存器分配很坑。按gcc约束,各种risc的32个寄存器几乎都以16个为主,结果一些中间结果都要各种往RAM里面导。像函数调用能保留好几个寄存器。

出0入0汤圆

发表于 2019-6-29 20:51:49 来自手机 | 显示全部楼层
在这里用是没有区别

出100入0汤圆

发表于 2019-6-29 22:20:47 | 显示全部楼层
没看出来啥区别

出0入0汤圆

发表于 2019-6-29 23:49:22 来自手机 | 显示全部楼层
wye11083 发表于 2019-6-29 15:48
哈哈。编译器会优化成inc。不过riscv里面就没有inc指令了。需要变成ori ra,r0,1,然后再加。。所以要用 ...

啥?RISC-V没有Inc指令?那也太坑了吧… 说什么跟arm竞争呢

出0入442汤圆

发表于 2019-6-30 00:10:35 | 显示全部楼层
fnems 发表于 2019-6-29 23:49
啥?RISC-V没有Inc指令?那也太坑了吧… 说什么跟arm竞争呢

体积秒杀ARM。VexRiscv典型精简配置在Spartan6上仅占550个LUT,整个SOC才占700+个LUT。得益于此,我现在一个小型LX25里面都能放3个SOC了,外加一大堆其它模块,并且精简高性能配置(不带硬件乘除法)纯CPU也只用920个LUT,整个SOC仅占用1700+个LUT,带来的灵活性秒杀之前的Verilog硬逻辑。使用标准1T读RAM会把CPI达到2以上,但是稍微配合一个512B的0T cache,就能降到1.3左右,合计下来并不比ARM差。

最重点是开放。

出0入0汤圆

发表于 2019-6-30 11:00:27 | 显示全部楼层
在ARM分论坛里说着循环自变量先加/后加的区别,结果楼歪到了RISC-V的跟ARM的对比

出0入0汤圆

发表于 2019-6-30 11:08:01 | 显示全部楼层
结果没区别 。转成汇编代码可能不g一样

出0入0汤圆

发表于 2019-6-30 14:19:09 | 显示全部楼层
wye11083 发表于 2019-6-30 00:10
体积秒杀ARM。VexRiscv典型精简配置在Spartan6上仅占550个LUT,整个SOC才占700+个LUT。得益于此,我现在 ...


感谢科普哈~ 自己对RISC-V的了解仅限于各种小报、专栏帖子

精简确实是优势,可以预计今后会出现一大堆基于RISC-V内核的专用SOC,比如Nordic的各种2.4G芯片,现在是51内核,后面改成RISC-V处理能力肯定会提升一个数量级。
但是看回复,听起来是在说基础功能上RISC-V更高效。那么遇到高性能要求的场合,RISC-V竞争力如何呢?
往基础指令说,比如需要Multiply Accumulate的情况,往复杂了说各种内核总线?

出0入0汤圆

发表于 2019-6-30 14:23:37 来自手机 | 显示全部楼层
fnems 发表于 2019-6-29 23:49
啥?RISC-V没有Inc指令?那也太坑了吧… 说什么跟arm竞争呢

估计单位硅片面积效率高
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 15:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表