if语句总是执行

时间:2012-05-13 01:22:20

标签: c++ visual-c++ if-statement

我遇到了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";
}

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

Blah Blah
Blah Blah
Blah Blah
Blah Blah

我的错误是什么?

4 个答案:

答案 0 :(得分: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";
}

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

答案 1 :(得分: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;
}

答案 2 :(得分:1)

除了限制if语句范围的分号外,我建议你使用嵌套的if循环。它们执行起来更快。

答案 3 :(得分:1)

;放在if条件前面,它会起作用。另外,因为选项是互斥的,所以最好这样写:

if (Choice == 1) {
    std::cout << "Blah Blah\n";
} else if (Choice == 2) {
    std::cout << "Blah Blah\n";
} else if (Choice == 3) {
    std::cout << "Blah Blah\n";
} else if (Choice == 4) {
    std::cout << "Blah Blah\n";
}

...或者使用switch,正如其他答案中所指出的那样。