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循环中的除法递增器

for循环的最后一段通常用于改变循环变量(通常是递增或递减)。所以,x++(也就是x = x + 1)使x增加。x/y不会改变x(或y,并且不是一个有效的c#语句)。你可以用x /= y来编译

我想你指的是x = x / yx/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:

  • 如果x0开始,它将永远不会改变
  • 条件是继续条件("while"),而不是终止条件("until")

所以你最终会得到:

for( var x = max_x; x > min_x; x /= y )