2015-11-20 78 views
3

要添加一个值,并为它分配回自己,我这样做:是否有&&和||的“赋值运算符”?速记?

x = x + y; 

用于制备速记,我可以使用add assignment operator这样的:

x += y; 

有没有像速记这对于& &和||运营商为这个?:

x = x && y; 

我试过以下,结果是不一样的上面:

x &= y; 
+0

的结果是不一样的,因为'X && = y'不会评估'y'如果'x'是假的,我假设。没有短路复合操作员。 –

+1

这个问题只是为了知识或出于好奇等问题?因为x = x && y;本身就这么简短! – niksofteng

+0

结果如何不一样? –

回答

2

你可以看到C#运营商here名单。

x & = y - AND赋值。并将y的值与x的值相加,将 的结果存储在x中,并返回新的值。

x | = y - 或分配。或将y的值与x的值相加,将 的结果存储在x中,并返回新的值。

当您说“结果不一样”时,您能提供您正在测试的x和y的示例值吗?
我认为你正在观察的是逻辑/按位AND/OR(&/|)和条件AND/OR(& &/||)之间的区别。如果不需要为了计算表达式的值,后者不会评估。如果对的评估有副作用,您会注意到按位运算符和条件运算符之间的差异。

1

不,没有,因为它没有太多的意义。

MSDN,只有在C#以下shortand运营商:

x += y – increment 
x -= y – decrement  
x *= y – multiplication assignment 
x /= y – division assignment 
x %= y – modulus assignment 
x &= y – AND assignment 
x |= y – OR assignment 
x ^= y – XOR assignment 
x <<= y – left-shift assignment 
x >>= y – right-shift assignment