21xrx.com
2024-05-20 11:09:45 Monday
登录
文章检索 我的文章 写文章
C++ switch case语句没有break的问题
2023-07-05 01:51:39 深夜i     --     --
C++ switch case break 问题 语句

在C++中,switch case语句是一种流程控制语句,常用于根据不同的条件执行不同的代码块。然而,有时在使用switch case语句时可能会出现一个问题,那就是缺少break语句。

在switch case语句中,每个case后面都应该有一个break语句,用于跳出switch语句的执行。如果没有break语句,程序将会继续执行下一个case的代码,直到遇到break语句或者switch语句结束。这就是所谓的"穿透"现象。

例如,下面的代码中,当i等于2时,程序将会执行case 2和case 3的代码。


int i = 2;

switch (i)

  case 1:

    cout << "1" << endl;

  case 2:

    cout << "2" << endl;

  case 3:

    cout << "3" << endl;

  default:

    cout << "default" << endl;

输出结果:


2

3

default

显然,这不是我们想要的结果。如果我们需要在每个case后面添加一个break语句,来避免程序出现穿透现象。


int i = 2;

switch (i)

  case 1:

    cout << "1" << endl;

    break;

  case 2:

    cout << "2" << endl;

    break;

  case 3:

    cout << "3" << endl;

    break;

  default:

    cout << "default" << endl;

    break;

输出结果:


2

这个结果就符合我们的预期了。

虽然缺少break语句可能会导致程序出现错误,但有时候我们也会利用这个特性进行编程。例如,我们可以用switch case语句实现一个简单的计算器程序。


int num1, num2;

char op;

cin >> num1 >> op >> num2;

switch (op) {

  case '+':

    cout << num1 + num2 << endl;

    break;

  case '-':

    cout << num1 - num2 << endl;

    break;

  case '*':

    cout << num1 * num2 << endl;

    break;

  case '/':

    if (num2 != 0)

      cout << num1 / num2 << endl;

    

    else

      cout << "divide by zero error" << endl;

    

    break;

  default:

    cout << "invalid operator" << endl;

    break;

}

这个程序简单易懂,而且使用了switch case语句的"穿透"特性,使代码更加简洁。

总之,在使用switch case语句时,一定要注意添加break语句,避免程序出现意外的错误。同时,也可以利用"穿透"特性,使代码更加简洁易懂。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复