我试图设计一种可以检查输入错误的构造,所以我在一个测试程序中编写了两个布尔函数,它们的参数是字符串引用。我希望我的if语句能够评估单词的第一个功能更改部分,然后再次评估第二个功能更改的单词,最后评估&&以查看是否可打印。但是,我的代码无法运行,并且错误提示当我尝试输出代码时,没有操作数与cout的<<操作符匹配。我的代码可以比我更好地解释。有人可以解释为什么这行不通吗?我正在使用Visual Studio 2012。
#include <iostream>
using namespace std;
bool changeString1(string &word){
word[0]='a';
return word[1]=='b';
}
bool changeString2(string &word){
word[2]='c';
return word[3]=='d';
}
int main(){
cout << "hello" << endl;
string word("cbad");
if(changeString1(word) && changeString2(word)){
cout << word << endl;
}
system("Pause");
return 0;
}
您的问题可能是您还没有#include <string>
开始编写代码。
&&
和||
表达式的撤出顺序严格按照“从左到右”的顺序进行,当表达式由左操作数确定时,保证“短路”。
当使用其他运算符时,它是未定义的,因此,例如if (changeString1(word) + changeString2(word))
,允许编译器changeString2
在之前调用changeString1
。
换句话说,当&&
表达式中有一个(和)时,如果第一个条件为假,则不对第二个表达式求值;如果第一个条件为真,则对第二个表达式求值。由于在这种情况下两者都确实是正确的,因此都将对其进行评估。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句