可能的重复:
C# 中的前后递增/递减运算符 https://stackoverflow.com/questions/174153/pre-and-post-increment-decrement-operators-in-c-sharp
考虑以下简单片段:
int x = 0;
int y = ++x + 1; // forks fine, gives y 2 (no doubt :) )
int x = 0;
int y = ++x++; // Error: The operand of an increment or decrement operator must be a variable, property or indexer.
显然,在同一语句中混合前后递增或递减对于编译器来说并不是一个理想的功能。
But
- 其实不是吗
++x++
与++x + 1
?即使考虑到埃里克·利珀特发现的所有微妙之处here https://stackoverflow.com/questions/3346450/what-is-the-difference-between-i-and-i。它们都是关于行为,而不是与操作数的关系以及 CSC 输出的消息。
- 其实不是吗
x
是一个变量?像++x + 1
构建
很好,操作数是一样的x
。它同样运行在
预自增运算符 ++。所以这仍然是一个有用的
限制似乎有点奇怪,因为它的编译器错误。难道不是
输出更有意义,例如“预增量和后增量
运算符不能同时应用?
- 你们知道编译器角度的任何隐藏原因吗
限制,而不是代码可用性?
(x++) 或 (++x) 的结果实际上不是变量。这是一个值,所以:
int y = (++x) + 1;
// evaluates to
int y = (1) + 1;
but
int y = ++x++;
// is equivalent to
int y = ++(x++);
// evaluates to
int y = ++(0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)