如果后跟返回 (C++),则 cout 不起作用
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";
始终被执行。
相关文章:
- 重载运算符 (<<) cout 在 c ++ 中不起作用,当我互相减去两个矩阵时不起作用
- 指针变量在 cout 函数中不起作用
- Cuda 基本程序 (将值写入矩阵和 std:cout 不起作用) ;主功能不启动
- 我正在使用 VS 代码,但 cout 不起作用
- 为什么“运算符<<(cout,double)”不起作用
- 为什么这个 RAII cout 重定向器不起作用:
- 为什么COUT在朋友函数中不起作用,该功能超载了操作员&lt;&lt;这是一个iStream运算符
- 将字符串转换为char,当我cout时,它是正确的,但是当我将chdir与char一起使用时,它不起作用
- Visual Studios Cout <<不起作用
- 为什么 cout 不起作用?
- std::cout::setf 不起作用(setf 到十六进制)
- C getarea()和cout不起作用
- 为什么当注释"cout"时此代码不起作用?
- 如果后跟返回 (C++),则 cout 不起作用
- C++11 和 boost_filesystem cout 和 printf 不起作用
- 将多个整数添加到一个向量索引? 'Cout'不起作用
- C++ cout 字符串不起作用.请指教
- 在 msgget() 之后,cout 或 printf 不起作用
- 命令'cin'和'cout'不起作用
- Cin和Cout不起作用