如果前面的语句成功,如何执行语句

时间:2012-08-20 05:37:27

标签: c++

所以我有类似

的东西
bSuccess = true;

bSuccess = bSuccess && statement1();
bSuccess = bSuccess && statement2();
bSuccess = bSuccess && statement3();
...

有没有更好或更惯用的方式来写这个?

3 个答案:

答案 0 :(得分:4)

你可以把它们连在一起:

bSuccess = statement1() && statement2() && statement3();

这是“惯用的”,但是这种类型的代码是否清晰尚不完全清楚。你依赖于每个函数调用的副作用,所以至少应该记录下来。

答案 1 :(得分:1)

假设成功时所有3个语句都返回true,我会使用:

statement1() && statement2() && statement3();

答案 2 :(得分:0)

这取决于你的陈述有多复杂。如此简单,您可以这样做:

bSuccess = statement1() && statement2() && statement3();

然而,对于更复杂的东西,我倾向于做以下事情:

fOk = 1; // true

if (fOk) {
    LotsOfStuffNotSettingError();
    fOk = SomethingSettingError();
}

if (fOk) {
    LotsMoreStuffNotSettingError();
    fOk = (ThisNeedsToReturnOne() == 1);
}

等等。

这样,块可以任意复杂,不限于能够用二进制逻辑运算符处理的简单语句。

每个块中可能有很多内容根本没有设置fOk,但每个块基本上应以一个语句设置fOk结束。