for循环问题的疑问

keith0523 2017-08-21 09:19:15
各位大神好,小弟最近在学习钱能的课本上,第4章课后习题最后一题,将二进制数串转换成十进制,标准答案中用到这么一个for循环
for(int i=s.length();--i;temp<<=1),请问中间的--i怎么理解?两个分号中间不应该是循环结束的判断条件吗?
...全文
286 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
JackyRao 2017-08-25
  • 打赏
  • 举报
回复
0 结束, 0:failse, 非0:true
赵4老师 2017-08-21
  • 打赏
  • 举报
回复
for (A;B;C) D;
//等价于
{
 A;
 while (1) {
  if (!(B)) break;
  D;
  C;
 }
}
棉猴 2017-08-21
  • 打赏
  • 举报
回复
自减操作符是使其操作数减1,其操作结果是修改后的值,即 例如i的值是2,那么--i这个表达式的值(注意是表达式的值不是i的值)是修改后i的值,即1 而for循环两个分号中间的是“条件语句”,当条件语句为false时结束循环,而false代表值0, 也就是说,当--i这个表达式是0时,结束循环。 C++中for循环语句简析 http://blog.csdn.net/hou09tian/article/details/77001685
白衣如花 2017-08-21
  • 打赏
  • 举报
回复
这种习惯我很不喜欢。我更喜欢 for (; i != 0; i--) 虽然它等价于 for (; i--; )
jena_wy 2017-08-21
  • 打赏
  • 举报
回复
两个;;中间是条件成立才会执行循环,所以--i当i为0的时候条件不成立,就会退出循环。
棉猴 2017-08-21
  • 打赏
  • 举报
回复
C++中for循环语句简析 http://blog.csdn.net/hou09tian/article/details/77001685 希望能帮助你
大米粥哥哥 2017-08-21
  • 打赏
  • 举报
回复
确实是判断条件 是不是习惯 i>0 不习惯i-- 这么理解 if((i-1)>0) if(--i) 以上这两个是等价的
cain-won 2017-08-21
  • 打赏
  • 举报
回复
int i的取值范围-32767~32768。--i超出了这个范围就会结束
xiarui 2017-08-21
  • 打赏
  • 举报
回复
当i的数值减到0的时候,也就是循环结束的时候
keith0523 2017-08-21
  • 打赏
  • 举报
回复
基本理解了,谢谢各位大神的热心解答!

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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