消息关闭
    暂无新消息!

for循环问题的疑问

问题作者 : 泰安ogx2017-08-21发布
各位大神好,小弟最近在学习钱能的课本上,第4章课后习题最后一题,将二进制数串转换成十进制,标准答案中用到这么一个for循环
for(int i=s.length();--i;temp<<=1),请问中间的--i怎么理解?两个分号中间不应该是循环结束的判断条件吗?

9个回答

︿ 2
确实是判断条件 
是不是习惯 i>0 不习惯i-- 
这么理解 if((i-1)>0)  if(--i)
以上这两个是等价的
︿ 1
for (A;B;C) D;
//等价于
{
 A;
 while (1) {
  if (!(B)) break;
  D;
  C;
 }
}
︿ 0
两个;;中间是条件成立才会执行循环,所以--i当i为0的时候条件不成立,就会退出循环。
︿ 0
自减操作符是使其操作数减1,其操作结果是修改后的值,即
例如i的值是2,那么--i这个表达式的值(注意是表达式的值不是i的值)是修改后i的值,即1
而for循环两个分号中间的是“条件语句”,当条件语句为false时结束循环,而false代表值0
也就是说,当--i这个表达式是0时,结束循环。
 C++中for循环语句简析
http://blog.csdn.net/hou09tian/article/details/77001685
︿ 0
这种习惯我很不喜欢。我更喜欢  for (; i != 0; i--)

虽然它等价于 for (; i--; )