有没有理由更喜欢一种增加int的方式而不是另一种?

时间:2014-06-25 18:46:57

标签: c# int increment

要增加int" i",我可以使用以下任何一种方法:

i++;
i = i + 1;
i = i++;

...具有相同的结果,如此代码所示:

int finalVal = 0;
for (int i = 0; i < 42; i++)
{
    //i++; 
    //i = i + 1; 
    i = i++; 
    finalVal = i;
}
MessageBox.Show(finalVal.ToString()); // in each case I get "41"

有没有理由更喜欢一种增加int的方式而不是另一种方式,或者是#34;六个中的一个,另外六个中的另一个,以及另一个中的6.0&#34 ;?

4 个答案:

答案 0 :(得分:3)

他们不一样。

  • i++;会在递增之前给出i的值,递增 下次使用i
  • 时会显示该值

示例代码:

int i = 1;
Console.WriteLine(i++); //print 1
Console.WriteLine(i);   //print 2
  • i = i + 1;会增加i,您会看到更改正确 程。
  • i = i++;,不会更改i的值,因为i++会 返回原始值而不是递增的,这将是 分配回i,保留原始值。

您的代码打印41的原因是因为您没有更改循环内i的值,i = i++i因循环而增加# 39; s i++,该值由finalVal

保留
int finalVal = 0;
for (int i = 0; i < 42; i++) //i is incremented here
{
    //i++; 
    //i = i + 1; 
    i = i++;      //No Change in i , this statement equals to i = i;
    finalVal = i; // finalVal is keeping value of i
}

答案 1 :(得分:1)

我希望i++超过其他两个,因为它表达了一个常见的习语。

这些代码行最终都做了完全相同的事情。但是,如果我正在扫描代码以获得增量,那么++就会跳出页面。

此外,i = i++实际上是不正确的。你的意思是i = ++i

简短回答:技术上没有,但在风格上,是的。

答案 2 :(得分:1)

我已经看到i ++会给那些刚接触编程的人带来困惑,因为它只是通过单独的语法显而易见的,它评估为i的前一个值。即使你弄错了:

i = i++;

这与

不同
  

i = ++ i;

  

i = i + 1;

此外,在C ++中,i ++可能效率较低,因为它可能需要构造不必要的临时对象。

答案 3 :(得分:1)

我会像这样重写你的代码,以完全理解正在发生的事情。

int ipp, ipone, ippass;
ipp = ipone = ippass =  0;
for (int i = 0; i < 5; i++)
{
    ipp++; 
    ipone = i + 1; 
    ippass = ippass++; 

    MessageBox.Show(" Loop Counter: " + i + "\n IPlusPlus: " + ipp + "\n IPlusOne: " + ipone + "\n IPlusPlusAssigned: " + ippass );

}

您可能希望降低循环次数,因为您将获得大量的消息框。