C++ if/else语句问题

ssl*_*pie 0 c++ xcode if-statement c++11

我前几天正在使用xcode,正在开发基于文本的对话游戏.

#include <iostream>

int main()
{
    std::cout<<"Conversation simulator requires you to type in all caps for all  of your replies"<<std::endl;
    std::cout<<"Type your first and last name!"<<std::endl;
    std::string fname = " ";
    std::string lname = " ";
    bool samename = false;
    std::cin>> fname >> lname ;
    if  (fname == "MUSCLE" and lname == "MAN")
        std::cout<< "Wow, we have the same first and last name!"<<std::endl;
        samename = true;
    else
        std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

我似乎没有什么不对,但Xcode不会运行,因为在这一行:

else
Run Code Online (Sandbox Code Playgroud)

它期待一个表达?我想不出那可能意味着什么.

Eli*_*off 9

如果你想在下面执行多个语句,你需要大括号if.这是一个为我编译的修复程序.

#include <iostream>

int main()
{
        std::cout<<"Conversation simulator requires you to type in all caps for all  of your replies"<<std::endl;
        std::cout<<"Type your first and last name!"<<std::endl;
        std::string fname = " ";
        std::string lname = " ";
        bool samename = false;
        std::cin>> fname >> lname;
        if  (fname == "MUSCLE" and lname == "MAN") {
                std::cout<< "Wow, we have the same first and last name!"<<std::endl;
                samename = true;
        } else {
                std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl;
        }
        return 0;
}
Run Code Online (Sandbox Code Playgroud)


Eik*_*iko 5

你忘记了if-block的花括号:

if  (fname == "MUSCLE" and lname == "MAN") {
    std::cout<< "Wow, we have the same first and last name!"<<std::endl;
    samename = true;
}
else
    std::cout<< fname << " "<< lname << "is a very nice name"<<std::endl;
Run Code Online (Sandbox Code Playgroud)

没有它们,只有下一个语句(在你的情况下输出)属于if.因此,在下一行中设置标志会导致else错误.