相关疑难解决方法(0)

为什么Java没有条件和条件或运算符的复合赋值版本?(&& =,|| =)

因此,对于在布尔二元运算符,Java有&,|,^,&&||.

让我们简要总结一下他们在这里简要介绍的内容:

对于&,结果值是true两个操作数值是否为true; 否则,结果是false.

对于|,结果值是false两个操作数值是否为false; 否则,结果是true.

对于^,结果值是true操作数值是否不同; 否则,结果是false.

&&操作是一样&,但是评估其右边的操作数只有在其左侧操作数的值true.

||操作是一样|的,但评估其右边的操作数只有在其左侧操作数的值false.

现在,所有5间,那些3有复合赋值版本,分别为|=,&=^=.所以我的问题是显而易见的:为什么不是Java提供&&=||=呢?我发现我需要那些比我更需要更多的&=|=.

而且我不认为"因为它太长"是一个很好的答案,因为Java有>>>=.这个遗漏必须有更好的理由.


15.26分配运营商 …

java conditional-operator short-circuiting assignment-operator compound-assignment

77
推荐指数
4
解决办法
1万
查看次数

&#=在C#中?(布尔表达式)

可能重复:
为什么没有|| =或&& =运算符?

通过纯粹的意外,我今天发现了

 a &= GetBool();
Run Code Online (Sandbox Code Playgroud)

是不一样的

 a = a && GetBool();
Run Code Online (Sandbox Code Playgroud)

多年来我一定误解了这一点.在第一个例子中,GetBool()即使"a"为假,也执行"".在第二个,它不是.

在C#中有什么东西可以实现"&& ="吗?

c# boolean-operations

10
推荐指数
2
解决办法
1800
查看次数

在C#中使用&= on boolean值

我在C#中有一个方法,SendEvent它返回一个bool表示它是否成功的方法.我想循环遍历许多对象并调用SendEvent它们,最后,有一个结果变量是a bool,即true如果所有SendEvent调用都成功,并且false至少有一个失败.

起初我这样做了:

bool result = true;
for (int i = 0; i < myObjects.Length; i++)
{
    result = result && myObjects[i].SendEvent();
}
Run Code Online (Sandbox Code Playgroud)

但是SendEvent如果一个失败,那将导致后续对象不会被调用,因为&&如果结果是,则不会执行操作符的右侧false.

所以我把它转过来:

bool result = true;
for (int i = 0; i < myObjects.Length; i++)
{
    result = myObjects[i].SendEvent() && result;
}
Run Code Online (Sandbox Code Playgroud)

但我觉得有点难看.我可以使用按位运算&=符来始终执行SendEvent调用,并设置结果的值,像这样?

bool result = true;
for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c# boolean operators short-circuiting

3
推荐指数
2
解决办法
203
查看次数

为什么〜= C++中唯一缺少的非逻辑赋值运算符?

出于好奇,为什么按位运算符~是唯一一个在C++中没有赋值版本的非逻辑运算符,即~=?所有关系运算符和按位运算符都有赋值版本,但~=缺少.这有什么特别的原因吗?

对于C++中的所有运算符,请参阅:http://www.tutorialspoint.com/cplusplus/cpp_operators.htm

c++ operators assignment-operator

1
推荐指数
1
解决办法
381
查看次数