Tham chiếu đến câu lệnh chuyển đổi C ++ tiêu chuẩn trong Microsoft Visual Studio C ++.

Bạn đang xem : hoặc trong trường hợp chuyển đổi c ++

câu lệnh switch (C ++)

Trong bài viết này

Cho phép lựa chọn giữa nhiều phần mã, tùy thuộc vào giá trị của một biểu thức tích phân.

Cú pháp

select-statement :
switch ( init-statement optC ++ 17 điều kiện ) câu lệnh

init-statement :
biểu thức-câu lệnh
khai báo đơn giản

điều kiện :
biểu thức
thuộc tính-specifier-seq opt statement-specifier-seq bộ khai báo dấu ngoặc nhọn-hoặc-bằng-khởi tạo

label-statement :
case hằng biểu thức : câu lệnh
default : câu lệnh

Nhận xét

Câu lệnh switch khiến điều khiển chuyển đến một câu lệnh có nhãn trong phần thân câu lệnh, tùy thuộc vào giá trị của điều kiện .

Điều kiện phải có kiểu tích phân hoặc là kiểu lớp có chuyển đổi rõ ràng thành kiểu tích phân. Quảng cáo toàn diện diễn ra như được mô tả trong Chuyển đổi tiêu chuẩn .

Nội dung câu lệnh switch bao gồm một loạt các nhãn case và một nhãn mặc định. label-statement là một trong những nhãn này và các câu lệnh theo sau. Các câu lệnh được gắn nhãn không phải là yêu cầu cú pháp, nhưng câu lệnh switch sẽ vô nghĩa nếu không có chúng. Hai giá trị hằng biểu thức trong câu lệnh case có thể đánh giá cùng một giá trị. Nhãn mặc định chỉ có thể xuất hiện một lần. Câu lệnh default thường được đặt ở cuối, nhưng nó có thể xuất hiện ở bất kỳ đâu trong phần nội dung câu lệnh switch . Nhãn case hoặc default chỉ có thể xuất hiện bên trong switch < / strong> tuyên bố.

hằng biểu thức trong mỗi nhãn trường hợp được chuyển đổi thành một giá trị không đổi cùng loại với điều kiện . Sau đó, nó được so sánh với điều kiện để bình đẳng. Điều khiển chuyển đến câu lệnh đầu tiên sau giá trị case hằng biểu thức khớp với giá trị của condition . Hành vi kết quả được hiển thị trong bảng sau.

switch hành vi câu lệnh

Tình trạng
Hoạt động

Giá trị được chuyển đổi khớp với giá trị của biểu thức điều khiển được quảng cáo.
Kiểm soát được chuyển đến câu lệnh theo sau nhãn đó.

Không có hằng số nào phù hợp với hằng số trong nhãn case ; có nhãn mặc định .
Kiểm soát được chuyển sang nhãn mặc định .

Không có hằng số nào phù hợp với hằng số trong nhãn case ; không có nhãn mặc định nào.
Quyền kiểm soát được chuyển sang câu lệnh sau câu lệnh switch .

Nếu tìm thấy một biểu thức phù hợp, việc thực thi có thể tiếp tục thông qua các nhãn case hoặc default sau này. Câu lệnh break được sử dụng để dừng thực thi và chuyển quyền kiểm soát sang câu lệnh sau câu lệnh switch . Không có câu lệnh break , mọi câu lệnh từ nhãn case phù hợp với cuối chuyển đổi , bao gồm cả mặc định , được thực thi. Ví dụ:

  // switch_statement1.cpp
#include & lt; stdio.h & gt;

int main () {
   const char * buffer = "Bất kỳ dòng ký tự nào";
   int chữ hoa_A, chữ thường_a, khác;
   ký tự c;
   chữ hoa_A = chữ thường_a = khác = 0;

   while (c = * buffer ++) // Đi bộ đệm cho đến khi NULL
   {
      chuyển đổi (c)
      {
         trường hợp 'A':
            chữ hoa_A ++;
            phá vỡ;
         trường hợp 'a':
            chữ_a ++;
            phá vỡ;
         mặc định:
            ++ khác;
      }
   }
   printf_s ("\ n Chữ hoa A:% d \ n Chữ hoa a:% d \ nTổng số:% d \ n",
      chữ hoa_A, chữ thường_a, (chữ hoa_A + chữ thường_a + khác));
}
 

Trong ví dụ trên, uppercase_A được tăng dần nếu c là chữ hoa 'A' . Câu lệnh break sau uppercase_A ++ kết thúc thực thi của nội dung câu lệnh switch và điều khiển vượt qua vào vòng lặp while . Nếu không có câu lệnh break , việc thực thi sẽ "chuyển sang" câu lệnh được gắn nhãn tiếp theo, do đó lowercase_a khác cũng sẽ được tăng lên. Mục đích tương tự được phục vụ bởi câu lệnh break cho case 'a' . Nếu c là chữ thường 'a' , thì lowercase_a được tăng dần và ngắt câu lệnh kết thúc phần nội dung câu lệnh switch . Nếu c không phải là 'a' hoặc 'A' , thì mặc định câu lệnh được thực thi.

Visual Studio 2017 trở lên (khả dụng ở chế độ / std: c ++ 17 trở lên): [[ Thuộc tính fallthrough]] được chỉ định trong tiêu chuẩn C ++ 17. Bạn có thể sử dụng nó trong câu lệnh switch . Đó là một gợi ý cho trình biên dịch hoặc bất kỳ ai đọc mã, rằng hành vi chuyển qua là có chủ ý. Trình biên dịch C ++ của Microsoft hiện không cảnh báo về hành vi dự phòng, vì vậy thuộc tính này không ảnh hưởng đến hành vi của trình biên dịch. Trong ví dụ, thuộc tính được áp dụng cho một câu lệnh trống trong câu lệnh có nhãn chưa kết thúc. Nói cách khác, dấu chấm phẩy là cần thiết.

  int main ()
{
    int n = 5;
    switch (n)
    {

    trường hợp 1:
        một();
        phá vỡ;
    trường hợp 2:
        b ();
        d ();
        [[dự đoán]]; // Tôi có ý định làm điều này!
    trường hợp 3:
        c();
        phá vỡ;
    mặc định:
        d ();
        phá vỡ;
    }

    trả về 0;
}
 

Visual Studio 2017 phiên bản 15.3 trở lên (khả dụng ở chế độ / std: c ++ 17 trở lên): A Câu lệnh switch có thể có mệnh đề init-statement , kết thúc bằng dấu chấm phẩy. Nó giới thiệu và khởi tạo một biến có phạm vi giới hạn trong khối của câu lệnh switch :

  chuyển đổi (Tiện ích gadget (args); auto s = gadget.get_status ())
    {
    tình trạng trường hợp :: tốt:
        gadget.zip ();
        phá vỡ;
    tình trạng trường hợp :: xấu:
        ném BadGadget ();
    };
 

Một khối bên trong của câu lệnh switch có thể chứa các định nghĩa với các trình khởi tạo miễn là chúng có thể truy cập được, nghĩa là không bị bỏ qua bởi tất cả các đường dẫn thực thi có thể có. Các tên được giới thiệu bằng cách sử dụng các khai báo này có phạm vi cục bộ. Ví dụ:

  // switch_statement2.cpp
// C2360 được mong đợi
#include & lt; iostream & gt;
sử dụng không gian tên std;
int main (int argc, char * argv [])
{
    chuyển đổi (tolower (* argv [1]))
    {
        // Lỗi. Tuyên bố không thể truy cập.
        char szChEntered [] = "Ký tự được nhập là:";

    trường hợp 'a':
        {
        // Khai báo szChEntered OK. Phạm vi địa phương.
        char szChEntered [] = "Ký tự được nhập là:";
        cout & lt; & lt; szChEntered & lt; & lt; "một";
        }
        phá vỡ;

    trường hợp 'b':
        // Giá trị của szChEntered không xác định.
        cout & lt; & lt; szChEntered & lt; & lt; "b \ n";
        phá vỡ;

    mặc định:
        // Giá trị của szChEntered không xác định.
        cout & lt; & lt; szChEntered & lt; & lt; "không phải a cũng không phải b \ n";
        phá vỡ;
    }
}
 

Câu lệnh switch có thể được lồng vào nhau. Khi được lồng vào nhau, các nhãn case hoặc default liên kết với switch tuyên bố kèm theo chúng.

Hành vi cụ thể của Microsoft

Microsoft C ++ không giới hạn số lượng giá trị case trong câu lệnh switch . Số lượng chỉ có hạn bởi bộ nhớ khả dụng.

Xem thêm

Tuyên bố về Lựa chọn
Từ khóa


Xem thêm những thông tin liên quan đến chủ đề hoặc trong trường hợp chuyển đổi c ++

Tham chiếu và tham trị trong C++

  • Tác giả: Lập Trình Không Khó
  • Ngày đăng: 2020-04-03
  • Đánh giá: 4 ⭐ ( 8696 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Đã học về hàm thì chúng ta cần phải nắm rõ khái niệm tham chiếu và tham trị. Đây là 2 cách truyền tham số vào hàm khác nhau. Do đó, tùy mục đích mà chúng ta sẽ truyền tham số bằng tham trị hoặc tham chiếu. Trong bài học này, Lập trình không khó sẽ cùng bạn đi làm sáng tỏ 2 khái niệm này qua các bài tập thực hành nhé.

    Link bài viết: https://nguyenvanhieu.vn/tham-chieu-va-tham-tri-trong-c/

    Hãy like, đăng ký kênh, để lại những nhận xét cũng như giới thiệu khóa học cho bạn bè của mình để ủng hộ cho Lập Trình Không Khó nhé các bạn!
    =====================
    Kết nối với Lập Trình Không Khó
    Website: http://nguyenvanhieu.vn/
    Facebook: https://fb.com/groups/LapTrinhKhongKho
    Email: hieunv.dev@gmail.com

    laptrinhkhongkho hoccpp cppcoban

Toán tử trong C

  • Tác giả: aicurious.io
  • Đánh giá: 3 ⭐ ( 2709 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Việc tính toán là cốt lõi của các chương trình máy tính. Bài viết này sẽ giới thiệu các toán tử có thể sử dụng và cách sử dụng chúng trong ngôn ngữ lập trình C.

Trong các trường hợp sau, trường hợp nào có sự chuyển hóa thế năng thành động năng

  • Tác giả: khoahoc.vietjack.com
  • Đánh giá: 4 ⭐ ( 6292 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong các trường hợp sau, trường hợp nào có sự chuyển hóa thế năng thành động năng? A. Mũi tên được bắn đi từ cung. B. Nước trên đập cao chảy xuống. C. Hòn bi lăn từ đỉnh dốc xuống dưới. D. Cả ba trường hợp trên

Câu lệnh if trong c (Bài 4)

  • Tác giả: giasutinhoc.vn
  • Đánh giá: 3 ⭐ ( 8245 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

If trong C với một hoặc nhiều điều kiện

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 4 ⭐ ( 7182 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn cách sử dụng lệnh if trong C. Bạn sẽ học được cách sử dụng các loại câu lệnh if trong C như lệnh if trong C, if else trong C và elif trong C, cũng như cách ứng dụng chúng để xử lý câu lệnh i

Các Loại Hình Tờ Khai Xuất Nhập Khẩu

  • Tác giả: tam-logistics.vn
  • Đánh giá: 5 ⭐ ( 4184 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: TAM Logistics đã tổng hợp các mã loại hình tờ khai xuất nhập khẩu đầy đủ nhất, mới nhất để chia sẻ với bạn trong bài viết này.

Chu trình Nitơ là gì? Chu trình Nitơ diễn ra như thế nào?

  • Tác giả: biogency.com.vn
  • Đánh giá: 5 ⭐ ( 5287 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chu trình Nitơ là một quá trình mà theo đó Nitơ bị biến đổi qua lại giữa các dạng hợp chất hóa học của nó (bao gồm sinh học và phi sinh học). Quá trình diễn ra chu trình Nitơ như thế nào? Nó có tác động gì đến quá trình xử lý nước thải?

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Cách thay đổi màu phông chữ HTML - màu phông chữ div html

By ads_php