for循环中的除法增量器?

时间:2011-07-07 04:09:05

标签: c# .net

这里的基本问题,只是对编写一个简单的公式感到好奇,并想知道是否可以在c#for循环中使用除法运算符来增加?

使用int X,想要将X重复除以Y,直到X <=某个数字Z.

表示(x = 0; x <= Z; X / Y)? //在这里,我在X / Y处抛出一个错误,也用(X / Y)抛出错误。

5 个答案:

答案 0 :(得分:3)

for循环中的最后一个段通常用于更改循环变量(通常递增或递减)。因此,x++x = x + 1)会增加xx/y不会更改x(或y,并且不是有效的C#语句。你可以做x /= y编译。

答案 1 :(得分:2)

我认为你的意思是x = x / yx/y对它本身没什么用处,虽然它至少在C和C ++中是有效的语法,但我不确定C#是否会允许它。

但是你应该记住,你的条件是“低音 - ackward”(a) :-)这个条件必须满足循环继续,不要终止。

所以,如果你的意思是(正如你所说)“...... 直到 X&lt; =某个数字Z”,那么循环应该是:

for (x = 0; x > Z; x = x / Y)

在任何情况下,由于x从零开始,零除以任何值(零除外)仍然为零,x的值永远不会改变。我怀疑你打算以更大的值启动x,因为你用除法运算符减少了它,并且你希望在它降到某个值以下时终止。


(a)说实话,我不确定为什么这句话如此受欢迎。这是明显的Spoonerism的腐败意味着事情是错误的方式,但是,就我对解剖学的有限知识而言,我很确定a **是假设倒退:-)

答案 2 :(得分:2)

/ =是分区增量运算符。

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
}

答案 3 :(得分:0)

在增量部分,它应该是声明。比如,x = x / y

答案 4 :(得分:0)

当然,除了其他人指出的实际重新分配x之外:

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

所以你最终会得到:

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