在C#中,myInt ++和++ myInt有什么区别?
我很难理解用C#递增变量之间的区别是什么:
myInt++;
和
++myInt;
什么时候你会使用哪一个?
我会给voteCount ++以获得最佳答案。 或者我应该给它++ voteCount …
单独编写(如图所示)没有区别 – 在两种情况下myInt都会增加1。
但是当你在表达式中使用它时会有所不同,例如:
MyFunction(++myInt); MyFunction(myInt++);
在第一种情况下,myInt递增,新的/递增的值传递给MyFunction()。 在第二种情况下,myInt的旧值传递给MyFunction()(但myInt在调用函数之前仍然递增)。
另一个例子是:
int myInt = 1; int a = ++myInt; // myInt is incremented by one and then assigned to a. // Both myInt and a are now 2. int b = myInt++; // myInt is assigned to b and then incremented by one. // b is now 2, myInt is now 3
BTW:正如Don在评论中指出的那样,相同的规则对递减操作也是有效的,这些操作的正确术语是:
++i; // pre-increment i++; // post-increment --i; // pre-decrement i--; // post-decrement
正如Jon Skeet所指出的那样:
其他人已经certificate它在哪里有所作为,并评论说,作为单一陈述,它没有任何区别。
我想补充一点,在它产生影响的地方使用它几乎总是一个坏主意。 我怀疑有时可能会有更多可读代码,例如:
Console.WriteLine("Foo: {0}", foo++);
比:
Console.WriteLine("Foo: {0}", foo); foo++;
……但它们非常罕见! 这两个样本中的后者使得排序晶体立即变得清晰 – 前者需要一点思考(无论如何,对于我的可怜的大脑)。 首先考虑可读性。
其他人已经certificate它在哪里有所作为,并评论说,作为单一陈述,它没有任何区别。
我想补充一点,在它产生影响的地方使用它几乎总是一个坏主意。 我怀疑有时可能会有更多可读代码,例如:
Console.WriteLine("Foo: {0}", foo++);
比:
Console.WriteLine("Foo: {0}", foo); foo++;
……但它们非常罕见! 这两个样本中的后者使得排序晶体立即变得清晰 – 前者需要一点思考(无论如何,对于我的可怜的大脑)。 首先考虑可读性。
除非它在表达式中,否则它不会
myInt=1; x=myInt++;
不同于:
myInt=1; x=++myInt;
第一个将1分配给x,因为赋值发生在增量之前。
第二个将2分配给x,因为赋值发生在增量之后。
例如,在赋值或表达式中
x = ++myInt; // x = myInt + 1 x = myInt++; // x = myInt
这也可以用在for循环或if语句之类的表达式中。 例如,如果seek为0且count为3,请执行以下操作。
while(seek++ < count) { Console.WriteLine(seek); }
导致输出1,2和3,用于搜索,以及以下
while(++seek < count) { Console.WriteLine(seek); }
搜索结果为1和2。 所以++ myInt在评估其值之前递增myInt,其中myInt ++在评估之后递增。
myInt ++(4个CPU指令)
LOAD AX, #myInt // From myInt memory to a CPU register COPY AX, BX INCREMENT BX STORE BX, #myInt // Use AX register for the value
++ myInt(3个CPU指令)
LOAD AX, #myInt // From myInt memory to a CPU register INCREMENT AX STORE AX, #myInt // Use AX register for the value
如果你这样做,那就不一样了
int x = 7; int x2 = x++; => x2 is 7 and x is 8
但是在做的时候
int x = 7; int x2 = ++x; => x2 is 8 and x is 8
预修复操作符++ myInt是一种减少行的方法:在将变量传递给其他地方之前增加变量。 这也是一种降低可读性的好方法,因为它并不常见。
MyMethod(++myInt);
与
myInt++; MyMethod(myInt);
对我来说,第二个更容易阅读。
它确定何时返回该操作的结果。
以下是MSDN站点的示例:
static void Main() { double x; x = 1.5; Console.WriteLine(++x); x = 1.5; Console.WriteLine(x++); Console.WriteLine(x); }
和输出:
2.5 1.5 2.5
我认为从评估和修改的顺序来看,这是最简单的理解。
(操作顺序在运算符和变量的类型顺序中很明显)
即,当在表达式中使用时,后缀运算符在应用运算符之前计算并使用表达式中的变量的当前值(返回语句或方法调用)。 使用前缀运算符是另一种方式。
++ myInt会在执行相关行之前向myInt添加一个,myInt ++将在之后执行。
例子:
int myInt; myInt = 1; someFunction(++myInt); // Sends 2 as the parameter myInt = 1; someFunction(myInt++); // Sends 1 as the parameter
例如,如果您执行以下操作:
int myInt = 5; Foo(++myInt); void Foo(int x) { Console.WriteLine(x); }
这将打印6。
Foo(myInt++);
将打印5;
基本上,++ myInt增量FIRST使用变量SECOND。 myInt ++恰恰相反。
上述就是C#学习教程:在C#中,myInt ++和++ myInt有什么区别?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/992700.html