编译运行问题

jqx_ah 2010-01-25 02:06:55
for(i = 0; (i < (ff = (j)? ino : gno ) ;i++)

这个for循环, 在编译运行的时候
(ff = (j)? ino : gno )这段代码是每循环一次都计算一次
还是在这个循环体刚进去第一次的时候 就计算出ff的值并保存在一个临时空间里?
感谢!
...全文
123 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovesi3344 2010-01-25
  • 打赏
  • 举报
回复
很牛逼的代码
Faint~~
zealand_1 2010-01-25
  • 打赏
  • 举报
回复
z569362161 2010-01-25
  • 打赏
  • 举报
回复
已经知道拉。
jqx_ah 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 stardust20 的回复:]
每次都计算一次。。计算出来的值直接赋值给ff
[/Quote]

刚测试了下
/1****************************************/
int y=10000000;
int x =1000000;
for(j = 0;j<2;j++)
for(i=0;i< (ff = (j)?x:y );i++){printf("HI");t=0;}
h2=time(NULL);
printf(" \n%d--%d ",h1,h2);
/*******************************************/

/2****************************************/
int y=10000000;
int x =1000000;
for(j = 0;j<2;j++){
ff = (j)?x:y ;
for(i=0;i< ff;i++){printf("HI");t=0;}
}
h2=time(NULL);
printf(" \n%d--%d ",h1,h2);
/*******************************************

两种结果的差值都是413! 应该说是只有在刚进去的时候进行了计算吧
mstlq 2010-01-25
  • 打赏
  • 举报
回复
debug版的话,应该每次都会算……
如果循环体内不会改变j变量的值,优化后就不知道了……
stardust20 2010-01-25
  • 打赏
  • 举报
回复
每次都计算一次。。计算出来的值直接赋值给ff
冻结 2010-01-25
  • 打赏
  • 举报
回复
(ff = (j)? ino : gno )这段代码是每循环一次都计算一次
james_hw 2010-01-25
  • 打赏
  • 举报
回复
动手跟一下吧,我觉得应该是每次都执行一次。
pengzhixi 2010-01-25
  • 打赏
  • 举报
回复
要看会不会优化了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧