Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过添加I--或I+,我改变了什么+;我的while循环?_C#_Loops_Math_While Loop - Fatal编程技术网

C# 通过添加I--或I+,我改变了什么+;我的while循环?

C# 通过添加I--或I+,我改变了什么+;我的while循环?,c#,loops,math,while-loop,C#,Loops,Math,While Loop,我试图弄清楚如何用循环来增加和减少数学问题,我一直在搞乘法和除法,但不能完全正确。我目前的困惑是,为什么数学计算不出我要做的事情。我认为这是因为我对循环的C#语法缺乏理解 int i = 6; while(i-- > 0) { Console.WriteLine(i / 2); } 我希望连续除以6,直到它变成1。 但是,输出类似于2,2,1,1,0,0。这是正确的整数数,但我真的很困惑它输出的是什么。如果我把它从这个改成这个:

我试图弄清楚如何用循环来增加和减少数学问题,我一直在搞乘法和除法,但不能完全正确。我目前的困惑是,为什么数学计算不出我要做的事情。我认为这是因为我对循环的C#语法缺乏理解

        int i = 6;

        while(i-- > 0)
        { Console.WriteLine(i / 2); }
我希望连续除以6,直到它变成1。 但是,输出类似于2,2,1,1,0,0。这是正确的整数数,但我真的很困惑它输出的是什么。如果我把它从这个改成这个:

        int i = 6;

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

它在达到24之前不会乘以6乘以2,而是在达到48之前乘以14乘以2。有没有一种方法可以改变它,让它达到我所期望的效果

第一个问题是关于整数除法。整数除以整数将始终是整数,因此任何余数都将被删除。因此:

5 / 2 = 2
4 / 2 = 2
3 / 2 = 1
2 / 2 = 1
1 / 2 = 0
0 / 2 = 0
第二个问题对我来说没有意义,因为我根本不希望循环被输入。您刚刚声明了
i=6
,由于
i++>24
为false,因此根本不应该输入循环。我怀疑你在什么地方调试错了


作为补充说明,我不建议您这样构造代码。像
while(i-->0)
这样的东西在阅读代码时可能会产生误导或混淆,要求阅读代码的人必须停下来想一想,或者调试代码

将比较和操作分开。同样的循环可以这样做:

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

哎呀,关于第二个问题,你说得对,>应该是一个@Patrick:在这种情况下,我希望它从14开始,因为7*2是14。谢谢你,我想我有点明白了!