C# 递增和递减i不能正常工作
以下两行代码返回的值不同。有什么原因吗C# 递增和递减i不能正常工作,c#,operators,increment,decrement,C#,Operators,Increment,Decrement,以下两行代码返回的值不同。有什么原因吗 int i; i = 1; i = i + i++; //Returns 2, expecting 3 及 语义上,这应该是相同的a+b=b+a对吗 与减少i相同: i = 1; i = i - i--; //Returns 0, expecting 1 及 更让我困惑的是增量后运算符的使用: i = 1; i = i + ++i; //Returns 3 及 与递减运算符相同: i = 1; i = i - --i; //Returns 1 及
int i;
i = 1;
i = i + i++; //Returns 2, expecting 3
及
语义上,这应该是相同的a+b=b+a
对吗
与减少i
相同:
i = 1;
i = i - i--; //Returns 0, expecting 1
及
更让我困惑的是增量后运算符的使用:
i = 1;
i = i + ++i; //Returns 3
及
与递减运算符相同:
i = 1;
i = i - --i; //Returns 1
及
最后一个问题:
编译器如何解释这两行代码
i = i+++i; // is it i + ++i or i++ + i?
i = i---i; // is it i - --i or i-- - i?
增量前(
++i
)和增量后(i++
)之间存在差异。区别在于:
预增量将在使用结果之前添加值。增量后将使用reslt。。然后添加值。那么,您的第一个示例:
int i;
i = 1;
i = i + i++; // First use equals 1, second use equals one. After this line though
// i equals 2, because of your use of post-increment.
同样,您的第二个示例:
i = 1;
i = i++ + i; // First use is 1. After the first use.. it is incremented..
// The second use it is 2. Therefore, 1 + 2 == 3.
至于你的最后一个问题。。。为什么不把它放到控制台应用程序中,自己试试呢?增量前(
++i
)和增量后(i++
)之间有区别。区别在于:
i = i + i++; //Returns 2, expecting 3
预增量将在使用结果之前添加值。增量后将使用reslt。。然后添加值。那么,您的第一个示例:
int i;
i = 1;
i = i + i++; // First use equals 1, second use equals one. After this line though
// i equals 2, because of your use of post-increment.
同样,您的第二个示例:
i = 1;
i = i++ + i; // First use is 1. After the first use.. it is incremented..
// The second use it is 2. Therefore, 1 + 2 == 3.
至于你的最后一个问题。。。为什么不把它放到控制台应用程序中,自己试试呢
i = i + i++; //Returns 2, expecting 3
称为后增量。值将首先使用,然后递增。相当于
i = i + i;
i = i+1;
i = i+1;
i = i + i;
这是预增量。值将首先递增,然后使用
i = i++ + i; //Returns 3
相当于
i = i + i;
i = i+1;
i = i+1;
i = i + i;
i=i+++i;//是i++i还是i++i
被解释为
i=i+1;
i=i+i
还有这个
i=i--i;//是我…-我还是我…-我
被解释为
i= i-1;
i = i-i;
称为后增量。值将首先使用,然后递增。相当于
i = i + i;
i = i+1;
i = i+1;
i = i + i;
这是预增量。值将首先递增,然后使用
i = i++ + i; //Returns 3
相当于
i = i + i;
i = i+1;
i = i+1;
i = i + i;
i=i+++i;//是i++i还是i++i
被解释为
i=i+1;
i=i+i
还有这个
i=i--i;//是我…-我还是我…-我
被解释为
i= i-1;
i = i-i;
递增或递减运算符的优先级始终高于算术运算符,如+-*/
有关详细信息,请参阅。 此外,postfixed Increment或decreament运算符的值仅在当前语句之后有效。 例如:
递增或递减运算符的优先级始终高于算术运算符,如+-*/
有关详细信息,请参阅。 此外,postfixed Increment或decreament运算符的值仅在当前语句之后有效。 例如:
我认为理解这一点的最好方法是看看编译器是如何理解这一点的 有关本案例的概述,请参见此处
x=i-- - --i;
致以最诚挚的问候我认为理解这一点的最好方法是看看编译器是如何理解这一点的 有关本案例的概述,请参见此处
x=i-- - --i;
致以最诚挚的问候几乎是和的副本(最后一份来自Eric Lippert,必须阅读)。
i=1;i=i+i++
为什么在这里期望3
?这只是为了说明,您永远不应该将++
和/或--
与同一表达式中其他地方使用的变量一起使用。读起来太难了。和的几乎一个副本的可能副本(最后一个来自Eric Lippert,必须读取)。i=1;i=i+i++
为什么在这里期望3
?这只是为了说明,您永远不应该将++
和/或--
与同一表达式中其他地方使用的变量一起使用。这本书太难读了。可能是重复的