for循环中的除法递增器
本文关键字:除法 循环 for | 更新日期: 2023-09-27 18:01:30
这里的基本问题,只是对编写一个简单的公式感到好奇,并想知道是否可以在c# for循环中使用除法运算符进行增量?
使用int X,希望将X反复除以某个数字Y,直到X <=某个数字z。
for (x = 0;x <= Z;X/Y) ?//这里,我抛出了一个错误在X/Y,也与(X/Y)。
for
循环的最后一段通常用于改变循环变量(通常是递增或递减)。所以,x++
(也就是x = x + 1
)使x
增加。x/y
不会改变x
(或y
,并且不是一个有效的c#语句)。你可以用x /= y
来编译
我想你指的是x = x / y
。x/y
本身没有什么用处,虽然它至少在C和c++中是有效的语法,但我不确定c#是否允许它。
但是你应该记住你有你的条件"bass- backward " (a):-)这个条件必须满足,循环才能继续,不终止。
所以,如果你的意思是(如你所说)"…until X <= some number Z",循环应该是:
for (x = 0; x > Z; x = x / Y)
在任何情况下,由于x
从0开始,并且0除以任何值(除了0)仍然是 0,因此x
的值永远不会改变。我怀疑你是想让x
以更大的值开始,因为你用除法运算符减少了它,你想在它低于某个值时终止。
(a)老实说,我不知道为什么这个短语这么受欢迎。这是明显的Spoonerism的腐败,意思是事情是错误的,但就我有限的解剖学知识而言,我很确定a**是应该是颠倒的:-)
/=是除法递增运算符。
x /= 2;
在功能上等同于
x = x / 2;
应该可以使用。
// changing x = 1 in example code, as per discussion below this comment
for (x = 1;x <= z;x /= y)
{
//whatever
}
在递增部分,它应该是语句。像,x = x/y
当然,但除了其他人指出的实际重新分配x
:
- 如果
x
从0
开始,它将永远不会改变 - 条件是继续条件("while"),而不是终止条件("until")
所以你最终会得到:
for( var x = max_x; x > min_x; x /= y )