语句中的C#3操作数

语句中的C#3操作数,c#,C#,我正在写下面的代码 int a = 10; int b = 12; int c = 14; int e = 18; bool d = false; a = b = c; //Output Console.WriteLine(a); //14 Console.WriteLine(b); //14 Console.WriteLine(c); //14 d = a != b; //Output Console.WriteLine(d); //False

我正在写下面的代码

int a = 10;
int b = 12;
int c = 14;
int e = 18;
bool d = false;

a = b = c;            //Output
Console.WriteLine(a); //14
Console.WriteLine(b); //14
Console.WriteLine(c); //14


d = a != b;            //Output
Console.WriteLine(d); //False

d = a == b;           //Output        
Console.WriteLine(d); //True

a = b = c = e;        //Output  
Console.WriteLine(a); //18
Console.WriteLine(b); //18
Console.WriteLine(c); //18
Console.WriteLine(e); //18
我无法理解,它是如何工作的

我们知道,在C#中,如果我们使用两个以上的操作数和一个以上的没有括号的运算符,即(and),那么

情况:1如果运算符的优先级不同

该操作将根据运算符优先级执行

例如,2+2/2结果将是3,因为语句将是2+(2/2)

但如果两个或两个以上运算符的运算符优先级相同,则如何处理

我无法理解,它是如何工作的?它是什么类型的操作员 打电话

=

a=b=c=e这是从右到左完成的分配。因此,
e
所拥有的现在由a,b,c持有

赋值运算符(=)存储其右侧操作数的值 在用左手表示的存储位置、属性或索引器中 并返回值作为其结果

如果您试图比较值,则应使用
=
。()

我无法理解,它是如何工作的?它是什么类型的操作员 打电话

=

a=b=c=e这是从右到左完成的分配。因此,
e
所拥有的现在由a,b,c持有

赋值运算符(=)存储其右侧操作数的值 在用左手表示的存储位置、属性或索引器中 并返回值作为其结果


如果您试图比较值,则应使用
=
。()

=
是一个逻辑运算符,如果值相等,则返回true

=
是赋值运算符,总是从右向左解析

=返回true


是一个单边求反运算符,它取其右侧的布尔值并返回oposite。

==
是一个逻辑运算符,如果值相等,则返回true

=
是赋值运算符,总是从右向左解析

=返回true


是一个单边求反运算符,它取其右侧的bool值并返回oposite。

这些语句从右到左求值。 同样,b=c返回b的新值

对于a=b=c

首先计算b=c=>b=c=14 现在b是14,表达式变成a=14

d=a的情况也是如此b

a=14,b=14,a!=b返回false 新表达式为d=false


希望您现在能理解。

这些语句是从右向左计算的。 同样,b=c返回b的新值

对于a=b=c

首先计算b=c=>b=c=14 现在b是14,表达式变成a=14

d=a的情况也是如此b

a=14,b=14,a!=b返回false 新表达式为d=false


希望你现在明白了。

我想这里唯一不清楚的是。您应该了解,它返回指定的值:

赋值运算符(=)存储其右侧操作数的值 在用左手表示的存储位置、属性或索引器中 并返回值作为其结果

也就是说,
b=c
c
的值赋值给局部变量
b
,并返回赋值作为结果。然后
a=b=c
将此返回值赋给局部变量
a
,并返回指定值

为了清楚起见,添加括号以显示操作顺序:

a = (b = c); // assign c value to b, then assign value of b to a
d = (a != b); // assign value of a and b comparison to d
d = (a == b); // same as above
a = (b = (c = e));  // everything becomes equal to e

未来阅读:

我认为这里唯一不清楚的事情是。您应该了解,它返回指定的值:

赋值运算符(=)存储其右侧操作数的值 在用左手表示的存储位置、属性或索引器中 并返回值作为其结果

也就是说,
b=c
c
的值赋值给局部变量
b
,并返回赋值作为结果。然后
a=b=c
将此返回值赋给局部变量
a
,并返回指定值

为了清楚起见,添加括号以显示操作顺序:

a = (b = c); // assign c value to b, then assign value of b to a
d = (a != b); // assign value of a and b comparison to d
d = (a == b); // same as above
a = (b = (c = e));  // everything becomes equal to e
未来阅读:

在C#中,如果使用两个以上的操作数和一个以上的运算符,而不使用任何括号,即(and),则

情况:1如果运算符的优先级不同

该操作将根据运算符优先级执行

e、 g.2+2/2结果将是3,因为语句将是2+(2/2)

情况2:当运算符优先级相同时

它是从右向左处理的

e、 g int a、b、c、d、e

a=b=c=d=e表示(a=(b=(c=(d=e)))

如果a、b、c、d、e是操作数,W、X、Y、Z是运算符

然后a W b X c Y d Z e表示(a W(b X(c Y(d Z e)))在c#中,如果使用的是两个以上的操作数和一个以上的运算符,没有任何括号,即(and),那么

情况:1如果运算符的优先级不同

该操作将根据运算符优先级执行

e、 g.2+2/2结果将是3,因为语句将是2+(2/2)

情况2:当运算符优先级相同时

它是从右向左处理的

e、 g int a、b、c、d、e

a=b=c=d=e表示(a=(b=(c=(d=e)))

如果a、b、c、d、e是操作数,W、X、Y、Z是运算符

然后awbxcydze表示(aw(bx(cy(dze)))

有三种操作