所以我想知道这个for循环的等价表达式是什么我老实说从来没有见过循环写这种方式,因为我猜不足。
以下是代码:
string convertToBase7(int num) {
int res = 0;
for(int i=0; num!=0; res += pow(10,i++)*(num % 7), num /= 7) {}
return to_string(res);
}
在每次迭代按照写入的顺序执行分号后的状态也是如此?同样在i = 2时,res + = pow(10,3)?这是对的吗?
答案 0 :(得分:1)
所以如果你有:
for (int i = 0, j = 0; i < 5 && j < 3; ++i, ++j)
类似于:
int i = 0, j = 0;
while (i < 5 && j < 3) {
++i;
++j;
}
在每次迭代按照编写顺序执行分号后,这些语句也是如此?
从上面的代码中可以看到是。
同样在i = 2时,res + = pow(10,3)?这是对的吗?
不一定是因为不保证i
在传递给函数之前会增加。看一下这个:
Order of operations for pre-increment and post-increment in a function argument?
你也有这个问题
num != 0;
如果分裂会发生什么:
num /= 7;
意外地跳过零,因此我建议您执行以下操作:
num > 0;
因此,综合以上所有内容,我会写下这一行:
for(int i=0; num!=0; res += pow(10,i++)*(num % 7), num /= 7) {}
如下:
for(int i=0; num!=0; ++i, res += pow(10,i)*(num % 7), num /= 7) {}
如果我需要确保i
在传递给函数之前递增,或者。:
for(int i=0; num!=0; res += pow(10,i)*(num % 7), ++i, num /= 7) {}
如果我需要确保i
在传递给函数后递增。