在if / elseif语句之间使用std :: cout时编译错误

时间:2016-01-28 10:09:08

标签: c++

我想知道为什么当我尝试在两者之间使用std :: cout时会出现编译错误,例如if语句和if语句。 例如:

if (condition)
{body}
std::cout << "hello world" << std::endl;
else if (condition)
{body}

给出错误

error: 'else' without a previous 'if'

5 个答案:

答案 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关键字。