我想知道为什么当我尝试在两者之间使用std :: cout时会出现编译错误,例如if语句和if语句。 例如:
if (condition)
{body}
std::cout << "hello world" << std::endl;
else if (condition)
{body}
给出错误
error: 'else' without a previous 'if'
答案 0 :(得分:3)
让我先说明这一点:
无论条件是否满足,您都希望在条件之间执行 cout 语句,即无论 if 的主体是否被执行。< / p>
正如之前的评论者所指出的那样,你不能在if-block范围的末尾和else
关键字之间放置一些东西。
通过将if-else-if块拆分为两个独立的if块来接近这个:
if (condition1) {
body1
}
cout << "hello world" << endl;
if (!condition1 && condition2) {
body2
}
答案 1 :(得分:1)
这就是为什么缩进很重要
if (condition)
{ body
std::cout << "hello world" << std::endl;
}
else if (condition)
{
body
}
在你的代码中,cout是if块的外部,因此不再需要其他内容。
答案 2 :(得分:1)
你不能在if和else之间添加任何可执行代码,除了if和else if循环的封闭体之外。
if (firstCondition)
{
/*code for firstCondition*/
//code anything here
}
//not here #######
else if (secondCondition)
{
/*code for secondCondition*/
//code anything here
}
答案 3 :(得分:0)
正确的是:
if (condition)
{
std::cout << "hello world" << std::endl;
}
else if (condition)
{body}
答案 4 :(得分:0)
这对你来说是一个选择。
if (fistCondition)
{
/*code for fistCondition*/
std::cout << "hello first" << std::endl;
}
else if (secondCondition)
{
/*code for secondCondition*/
std::cout << "hello second" << std::endl;
}
如果您想在第一个和第二个条件之间的任何情况下调用cout
,请避开else
关键字并应用两个if
语句。
if (fistCondition)
{
/*code for fistCondition*/
std::cout << "hello first" << std::endl;
}
std::cout << "posterior to first and prior to second if statement" << std::endl;
if (secondCondition && !firstCondition)
{
/*code for secondCondition*/
std::cout << "hello second" << std::endl;
}
在这种情况下,&& !firstCondition
会为您的目的模拟else
关键字。