2011-07-07 95 views
1

這裏的基本問題,只是好奇編寫一個簡單的公式,並想知道是否有可能使用除法運算符的增量在c#for循環?在for循環中的分區增量?

使用INT X,想通過一些編號Y反覆分裂X直到X < =一些數Z.

爲(X = 0; X < = Z; X/Y)? //在這裏,我在X/Y處拋出一個錯誤,同樣用(X/Y)拋出錯誤。

回答

2

我想你的意思是x = x/yx/y對它本身沒有任何用處,雖然它至少在C和C++中是有效的語法,但我不確定C#不會允許它。

但是你要記住,你有你的條件「低音ackward」 (一) :-)這個條件必須滿足的循環來繼續,不終止。

所以,如果你的意思是(因爲你狀態) 「... 直到 X < =一定數量Z」,循環應該是:

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

在任何情況下,由於在零x開始,零除零(除零之外)爲仍爲零,x的值永不改變。我懷疑你打算以更大的值開始x,因爲你正在用除法運算符減小它,並且當它下降到特定值以下時想要終止。


(一)說實話,我不知道爲什麼,這句話是如此受歡迎。這是顯而易見的首音誤置的意思的事情都是圍繞錯誤的方式,但是,腐敗就我有限的解剖學知識去,我敢肯定的一**被應該是向後:-)

+0

謝謝,夥計們。那樣做了。 ] –

3

for循環中的最後一個段通常用於更改循環變量(通常遞增或遞減)。所以,x++(這是x = x + 1)增加xx/y不會更改x(或y,並且不是有效的C#語句)。你可以做x /= y這將編譯。

0

在增量部分,應該是聲明。 like,x = x/y

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 
} 
+0

好的無限循環;) –

+0

有沒有辦法判斷它是否是無限的,這取決於y和z的值是什麼,我們看不到。我剛從他原來的例子中拿出來。大概他會設置他們適當的值和/或做一些額外的循環代碼,以避免這種情況。 – Cortright

+0

其實循環是null或無限。如果'z'大於零則爲空。如果'z'小於或等於零,它是無限的。但這是問題的錯,而不是科特賴特的答案。 – paxdiablo

0

當然可以,但除了別人所指出的關於實際重新分配x

  • 如果x開始在0,它永遠不會改變
  • 條件是繼續條件(」同時「),而不是終止條件(」直到「)

所以你最終會得到:

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