if语句总是执行

THU*_*OVE 4 c++ if-statement visual-c++

我的if声明遇到了彼此的问题.这是我的代码:

std::cout << "1) Option 1\n";
std::cout << "2) Option 2\n";
std::cout << "3) Option 3\n";
std::cout << "4) Option 4\n";
std::cout << "Type your choice and hit ENTER \n";

std::cin >> Choice;

if(Choice == 1); 
{
std::cout << "Blah Blah\n";
}
if(Choice == 2);
{
std::cout << "Blah Blah\n";
}
if(Choice == 3);
{
std::cout << "Blah Blah\n";
}
if(Choice == 4);
{
std::cout << "Blah Blah\n";
}
Run Code Online (Sandbox Code Playgroud)

通过相互碰撞我的意思是:它只会忽略我的if语句并运行我的所有代码,所以它只会打印出来:

Blah Blah
Blah Blah
Blah Blah
Blah Blah
Run Code Online (Sandbox Code Playgroud)

我的错是什么?

Man*_*eld 30

需要删除分号,它们将终止if语句.

if(Choice == 1)
{
std::cout << "Blah Blah\n";
}
if(Choice == 2)
{
std::cout << "Blah Blah\n";
}
if(Choice == 3)
{
std::cout << "Blah Blah\n"
}
if(Choice == 4)
{
std::cout << "Blah Blah\n";
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用else ifs来清理代码.

  • @THUNDERGROOVE查看是否可以在编译器上启用更多警告.例如,在我的编译器上,你的代码给了我一堆"警告:if语句有空体[-Wempty-body]",并直接指向有问题的分号. (6认同)
  • 没问题.在某些时候我们都犯了这些看似简单的错误:) (2认同)

MrW*_*Wuf 5

你为什么不在这里使用switch语句?真的会清理你的代码.

std::cin >> Choice;

switch(Choice)
{
case 1:
std::cout << "Blah Blah\n";
break;

case 2:
std::cout << "Blah Blah\n";
break;

case 3:
std::cout << "Blah Blah\n";
break;

case 4:
std::cout << "Blah Blah\n";
break;
}
Run Code Online (Sandbox Code Playgroud)

  • @Inverse然后所有的地狱`破坏松散 (6认同)