21xrx.com
2025-03-31 05:56: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语句,避免程序出现意外的错误。同时,也可以利用"穿透"特性,使代码更加简洁易懂。

  
  

评论区