这里的基本问题,只是对编写一个简单的公式感到好奇,并想知道是否可以在c#for循环中使用除法运算符来增加?
使用int X,想要将X重复除以Y,直到X <=某个数字Z.
表示(x = 0; x <= Z; X / Y)? //在这里,我在X / Y处抛出一个错误,也用(X / Y)抛出错误。
答案 0 :(得分:3)
for
循环中的最后一个段通常用于更改循环变量(通常递增或递减)。因此,x++
(x = x + 1
)会增加x
。 x/y
不会更改x
(或y
,并且不是有效的C#语句。你可以做x /= y
编译。
答案 1 :(得分:2)
我认为你的意思是x = x / y
。 x/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
之外:
x
从0
开始,则永远不会改变所以你最终会得到:
for( var x = max_x; x > min_x; x /= y )