相关疑难解决方法(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/C++中没有|| =运算符?

可能重复:
&& =和|| =运算符

见标题.可以扩展此问题以包括所有逻辑+赋值运算符.澄清:我不是在谈论| =运算符.

另一个例子:&& =

谢谢.

例:

bool result = false;

// Today
result = result || my_test1();
// Do stuff
result = result || my_test2();

// In my imagination only...
result ||= my_test1();
// Do stuff
result ||= my_test2();

c c++ operators

10
推荐指数
3
解决办法
1023
查看次数

按位AND与函数在C++中返回bool

我编写了一个程序,列出了一组内容中的错误,并在结尾返回一个布尔值(返回true表示没有找到错误).

以下是我的代码摘要:

bool checkStuff1() {/*...*/}
bool checkStuff2() {/*...*/}
// ...
bool checkStuffN() {/*...*/}

bool checkAllStuff()
{
    bool result = true;
    result &= checkStuff1();
    result &= checkStuff2();
    // ...
    result &= checkStuffN();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我相信最终result将是正确的价值.但是,我想确保checkStuffX()调用所有函数(因为它们在失败时打印错误消息,并且我希望打印所有错误消息).

我知道,如果我这样写,它会checkStuffX()在第一个失败之后跳过所有:

result = result && checkStuffX(); // Will not call checkStuffX() if result is already false
Run Code Online (Sandbox Code Playgroud)

我也知道,如果我这样写,它会调用所有checkStuffX()函数:

result = checkStuffX() && result; // Will always call checkStuffX() even if result is false
Run Code Online (Sandbox Code Playgroud)

但我想知道我使用的代码的行为,按位比较,是否由标准确定并保证?

或者是否存在未定义行为的风险,具体取决于所使用的编译器及其优化?

c++ boolean bitwise-operators

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

使代码更清洁

对不起,如果这个问题不适合SO.

我有一个C++函数,大致看起来像下面给出的MyFun().

从这个函数我调用一些(比如大约30个)其他返回布尔变量的函数(true表示成功,false表示失败).如果这些函数中的任何一个返回false,我也必须从MyFun()返回false.此外,如果中间函数调用失败,我不应该立即退出(不调用其余函数).

目前我正如下面给出的那样做,但感觉可能有更简洁/简洁的方法来处理这个问题.任何建议表示赞赏.

非常感谢.

bool MyFun() // fn that returns false on failure
{
    bool Result = true;

    if (false == AnotherFn1()) // Another fn that returns false on failure
    {
        Result = false;
    }

    if (false == AnotherFn2()) // Another fn that returns false on failure
    {
        Result = false;
    }

     // Repeat this a number of times.
    .
    .
    .


    if (false == Result)
    {
         cout << "Some function call failed";
    }

    return Result;
}
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
3
解决办法
459
查看次数