Hỏi về thứ tự thực hiện các lệnh trong switch-case C++

Em muốn hỏi về thứ tự thực hiện các lệnh sau đây ạ? Sau khi chạy thì kết quả cho ra 4, vì sao ạ?

#include <iostream>
using namespace std;
int main(){
    int a=5;
    switch (a/2){
    case 1: a = a + 4;
    default: a++;
    case 2: a = a - 4;
    case 3: a = a * 4;
    }
    cout << a << endl;
    return 0;
}

Không có break; kìa bạn

default phải để dưới cùng chứ

case 1: lệnh; break; tương tự

2 Likes

Từ case 2 sẽ chạy thẳng xuống luôn nhé :slight_smile:
break khi hết một case thì mới dừng.

3 Likes

À không, mình biết là vậy. Ý mình muốn hỏi là nếu ghi như vậy thì chương trình vẫn chạy đúng và ra kết quả là 4, mình muốn biết vì sao có kết quả ấy í mà.

Tức là khi không có break thì chương trình chạy từ chỗ case đúng cho đến khi break (hoặc đến hết) phải ko ạ?

1 Like

Đúng vậy. default: để sau cùng là vì theo logic thì phải xét hết những case kia trước rồi mới nhảy vào default:.

switch-case

case <số>:default: thực ra cũng là label nhưng có ý nghĩa đặc biệt trong switch, nên chương trình cứ thế mà chạy.

5 Likes

cảm ơn bạn <3 …

  1. Đặt default ở cuối switch (default không cần break)
  2. Sau mỗi case nếu không có break thì code sẽ chạy thẳng từ đó xuống cho đến khi gặp break hoặc đến hết switch.

Trong trường hợp của bạn thì code sẽ chạy từ case 2 đến hết switch:

 case 2: a = a - 4 // 5 - 4 = 1
 case 3: a = a * 4 // 1 * 4 = 4
5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?