2017-01-13 4 views
0

私は、ループで数学の問題を増減する方法を手に入れようとしています。私は乗算と除算を混乱させてきましたが、それを正しく得ることはできません。私の現在の混乱は、私がやろうとしていることに数学がうまくいかない理由です。私はそれがループに関するC#構文の理解の私の不足であると仮定しています。私のwhileループにi--またはi ++を追加することで、何が変わりますか?

 int i = 6; 

     while(i-- > 0) 
     { Console.WriteLine(i/2); } 

私はそれは、出力が2,2,1,1,0,0のようなものであるしかし1 に達するまで連続して6を分けることを期待します。これは正しい整数の数ですが、出力する内容については本当に混乱しています。私はそれから、このように変更した場合:

 int i = 6; 

     while(i++ > 24) 
     { Console.WriteLine(i * 2); } 

それが24に到達するまで、それが48に達するまでには、2によって2の代わりにそれ倍数14の6を掛けないように、私はこれを変更することができます方法はあります私はそれを期待しているのですか?

答えて

1

最初の質問は整数除算についてです。整数で割った整数は常に整数であるため、余りはすべて削除されます。したがって:

5/2 = 2 
4/2 = 2 
3/2 = 1 
2/2 = 1 
1/2 = 0 
0/2 = 0 

2番目の質問は本当に私には意味がありません。なぜなら、ループはまったく入力されないと思うからです。 i = 6と宣言したばかりで、i++ > 24はfalseであるため、ループは決して入力しないでください。私はあなたが何かどこかで誤ってデバッグされていると思う。


補足として、このようなコードを構造化することはお勧めしません。 while (i-- > 0)のようなものは、コードを読む際に誤解を招く、または混乱させる可能性があります。

比較と操作を分けてください。同じループは次のように行うことができます。

while (i > 0) 
{ 
    i--; 
    Console.WriteLine(i/2); 
} 
+0

おっとは、2番目の1程度だね、><なければなりません。 – Patrick

+0

@パトリック:7 * 2が14なので、14で始まると思っています。 – David

+0

ありがとう、どういうことが起こっているのでしょうか? – Patrick

関連する問題