Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#自动递增运算符错误:操作数语法不正确?_C#_Operators - Fatal编程技术网

C#自动递增运算符错误:操作数语法不正确?

C#自动递增运算符错误:操作数语法不正确?,c#,operators,C#,Operators,我正在查看并试图了解操作员实际上是如何工作的 递增运算符(++)将其操作数递增1。递增运算符可以出现在其操作数之前或之后:++variable和variable++ 第一种形式是前缀递增操作。运算的结果是操作数递增后的值 第二种形式是后缀增量操作。运算的结果是操作数递增之前的值 我希望下面的操作返回3,但它不编译,并且声明运算符必须是变量、属性或索引器: int x = 0; Console.WriteLine(x++ ++ ++); /*Expected output: 3*/ 为什么这是错

我正在查看并试图了解操作员实际上是如何工作的

递增运算符(++)将其操作数递增1。递增运算符可以出现在其操作数之前或之后:
++variable
variable++

第一种形式是前缀递增操作。运算的结果是操作数递增后的值

第二种形式是后缀增量操作。运算的结果是操作数递增之前的值

我希望下面的操作返回
3
,但它不编译,并且声明运算符必须是变量、属性或索引器:

int x = 0;
Console.WriteLine(x++ ++ ++);
/*Expected output: 3*/
为什么这是错误的?我应该假定
x++
没有为下一个
++
运算符返回相同类型的值吗?

来自:

后缀递增或递减操作的操作数必须是分类为变量、属性访问或索引器访问的表达式。运算结果是与操作数类型相同的值

x
是一个变量,但
x++
不是“变量、属性访问或索引器访问”


现在,让我们想象一个这样的后缀增量操作符调用合法的世界。给定
intx=42
x++
x
增加到43,但计算结果为42。如果
x++
合法,它将应用于
x++
,这不是您想要的(它将增加临时值,而不是
x

它增加变量并返回结果。结果是一个结构,而不是一个变量。该语言不支持此操作。注意,
0++
也不编译。