[英]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.