簡體   English   中英

如果回車后cout不起作用(C ++)

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

我一般對編程還不熟悉,所以我編寫了一個程序來處理字符串及其限制,然后遇到了兩個問題。 我感到困惑的是,為什么當我運行下面的程序時,函數中的所有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"; 總是被執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM