C++ Switch 语句问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:44:09
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{

switch ( cin.get() % 2 )
{
case 0:
cout << "Even integer" << endl;

case 1:
cout << "Odd integer" << endl;
}
return 0;
} // end main
请指出上面代码的错误.为什么输入偶数就会两个都打印出来.而奇数不会.
case 0:
cout << "Even integer" << endl;
这后面应该可以不加break咯。不是嘛?
不要再说加个break 就完事.没看清题就不要回答啦谢谢.
我当然直道不加break会继续比较case 1,可是问题是我输入的如果是偶数.他就会连case1也判断为真.也就是打印两条语句--Even integer 和 Odd integer.而一开始输入奇数就不会这样.请看清楚,谢谢
tacyxx老兄,不会吧.不可能不会继续比较啊case 1,不可能没比较就直接执行他的语句吧.

switch(){}中没加如 break;应该为
switch ( cin.get() % 2 )
{
case 0:
cout << "Even integer" << endl;
break;//加在着
case 1:
cout << "Odd integer" << endl;
break;//加在着
}

应该得加break,endl只是数据流的结束,程序继续

输入为偶数的时候,它不会去比较是否等于1,而是直接执行cout << "Odd integer" << endl; 当然会打印两行的。在switch里面,当某个分支成立的时候执行这个分支,如果这个分支最后一句没有break会直接执行下面分支的语句,不会再比较。

赞同图章经理的回答