如何在if语句后运行多个函数

时间:2013-12-01 04:40:53

标签: c++ if-statement boolean

如果由于真或假而导致返回和cout怎么办?

gameState computerMove(gameState state) {
    if (sizeOfPile(state,1) > 0)
         return removeCoinsFromPile(state,1,1);
         cout << "I take 1 coin from Pile 1." << endl;
    else
          return removeCoinsFromPile(state,1,2);
          cout << "I take 1 coin from Pile 2" << endl;

3 个答案:

答案 0 :(得分:2)

C ++使用“复合语句”的概念 - 由多个子语句组成的语句 - 用括号{}表示,就像您用于函数一样。

gameState computerMove(gameState state) {
}

您可以在任何可以使用常规语句的地方使用复合语句:

int sum = 0;
for (int i = 0; i < 100; ++i)
    sum += i;

int sum = 0;
for (int i = 0; i < 100; ++i) {
    sum += i;
}

这些做同样的事情,但如果我们需要在for中添加更多指令,我们将它们添加到'{'s。

之间。

关于此的一个重要事项:复合语句被认为具有“范围”

int i = 1;
{
    int i = 2;
    std::cout << "inside, i = " << i << '\n';
}
std::cout << "outside, i = " << i << '\n';

程序员有时会使用它来维护高级对象的生命周期。下面的代码打开一个文件,并在我们完成后立即释放它 - 因为当'istream'对象超出范围时会发生这种情况。

std::string instructions;
{
    std::istream file("instructions.txt");
    file >> instructions;
} // <-- 'file' goes away, which closes the file.

但是:return关键字会导致函数结束并返回值。因此,在你的cout之后你将不得不这样做

if (sizeOfPile(state,1) > 0) {
     cout << "I take 1 coin from Pile 1." << endl;
     return removeCoinsFromPile(state,1,1);
}

答案 1 :(得分:1)

你的函数在return语句之后结束,所以你应该准备在变量中返回什么,打印它,然后返回,如下所示:

int res;
if (sizeOfPile(state,1) > 0) {
     res = removeCoinsFromPile(state,1,1);
     cout << "I take 1 coin from Pile 1." << endl;
} else {
      res = removeCoinsFromPile(state,1,2);
      cout << "I take 1 coin from Pile 2" << endl;
}
return res;

但是,在您的特定情况下,您可以使用条件运算符在没有if的情况下重写此内容:

int pile = sizeOfPile(state,1) > 0 ? 1 : 2;
res = removeCoinsFromPile(state, 1, pile);
cout << "I take 1 coin from Pile " << pile << endl;
return res;

答案 2 :(得分:0)

您可以将return语句移到cout语句之后。

gameState computerMove(gameState state) {
    int res;
    if (sizeOfPile(state,1) > 0) {
        cout << "I take 1 coin from Pile 1." << endl;
        res = removeCoinsFromPile(state,1,1);
    } else {
        cout << "I take 1 coin from Pile 2" << endl;          
        res = removeCoinsFromPile(state,1,2);
    }
    return res;
}
在了解c ++中的函数时,

This website可能会有所帮助。