如果后跟返回 (C++),则 cout 不起作用

cout doesn't work if followed by return (c++)

本文关键字:cout 不起作用 C++ 返回 如果      更新时间:2023-10-16

我对编程相当陌生,所以我做了一个程序来处理字符串及其局限性,我遇到了两个问题。我很困惑,为什么当我运行下面的程序时,函数中的所有cout都没有执行,以及为什么语句a[0] == b[0]是正确的。

#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
string compare(string a, string b){
    if (a[0] == b[0])
        cout<<"a = b"<<endl;
        return "equal";
    if (a[0] < b[0])
        cout<<"a < b"<<endl;
        return "less than";
    if (a[0] > b[0])
        cout<<"a > b"<<endl;
        return "greater than";  
    return "nothing";
}
int main(){
    string a = "Hello";
    string b = "World";
    string str;
    str = compare(a, b);
    cout << "str = " << str;
    return 0;
}

结果是:

str = equal

如果您正确缩进代码,您看到所看到的行为的原因将变得显而易见:

string compare(string a, string b){
    if (a[0] == b[0])
        cout<<"a = b"<<endl;
    return "equal";
    // ...
}

它总是返回"equal" .您需要添加大括号以对两行进行分组:

string compare(string a, string b) {
    if (a[0] == b[0])
    {
        cout << "a = b" << endl;
        return "equal";
    }
    // etc.
}
这是

正确的结果,因为您没有将有意的分支代码放入括号对{} 中。因此,在您的函数中,语句return "equal";始终被执行。