c++ if/else语句问题

C++ if/else statement problems

本文关键字:语句 问题 else if c++      更新时间:2023-10-16

前几天我正在使用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;
}

对我来说没什么问题,但Xcode不会运行,因为在这一行:

else

它期望一个表达式?我想不出那是什么意思

如果您希望在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;
}

您忘记使用if块的花括号了:

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;

如果没有它们,只有下一条语句(在您的例子中是输出)属于if。所以在下一行设置标志会使else不正确。

您的if中忘记了括号。以下是else语句的修复。

#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;
}

你漏掉了括号:

If () {
} else {
}

我认为必须使用左右花括号:

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;