如果由于真或假而导致返回和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;
答案 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可能会有所帮助。