要增加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 ;?
答案 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 );
}
您可能希望降低循环次数,因为您将获得大量的消息框。