สวิตช์ คำสั่งอนุญาตให้ทดสอบตัวแปรเพื่อความเท่าเทียมกันกับรายการค่า แต่ละค่าเรียกว่า case และตัวแปรที่ถูกเปิดจะถูกตรวจสอบสำหรับแต่ละ switch case .
ไวยากรณ์สำหรับคำสั่ง switch ในภาษาซีมีดังต่อไปนี้ −
switch(expression) { case constant-expression : statement(s); break; /* optional */ case constant-expression : statement(s); break; /* optional */ /* you can have any number of case statements */ default : /* Optional */ statement(s); }
กฎต่อไปนี้ใช้กับคำสั่ง switch -
-
นิพจน์ ใช้ใน สวิตช์ คำสั่งต้องมีประเภทอินทิกรัลหรือแจงนับ หรือเป็นประเภทคลาสที่คลาสมีฟังก์ชันการแปลงเดียวเป็นอินทิกรัลหรือประเภทแจงนับ
-
คุณสามารถมีคำสั่งกรณีและปัญหาจำนวนเท่าใดก็ได้ภายในสวิตช์ แต่ละกรณีตามด้วยค่าที่จะเปรียบเทียบและทวิภาค
-
นิพจน์คงที่ สำหรับเคสต้องเป็นชนิดข้อมูลเดียวกับตัวแปรในสวิตช์ และต้องเป็นค่าคงที่หรือค่าตามตัวอักษร
-
เมื่อตัวแปรที่ถูกเปิดขึ้นมามีค่าเท่ากับ case คำสั่งที่ตามหลัง case นั้นจะดำเนินการจนถึง break ถึงคำสั่งแล้ว
-
เมื่อ แตก ถึงคำสั่ง สวิตช์จะสิ้นสุดลง และโฟลว์ของการควบคุมจะข้ามไปยังบรรทัดถัดไปตามคำสั่งของสวิตช์
-
ไม่ใช่ทุกกรณีจำเป็นต้องมี ตัวแบ่ง . ถ้าไม่มี แตก ปรากฏขึ้น กระแสของการควบคุมจะผ่านไปยังกรณีต่อมาจนกว่าจะถึงจุดแตกหัก
-
คำสั่ง switch สามารถมี ค่าเริ่มต้น . หรือไม่ก็ได้ กรณีซึ่งต้องปรากฏที่ส่วนท้ายของสวิตช์ กรณีเริ่มต้นสามารถใช้สำหรับการทำงานเมื่อไม่มีกรณีและปัญหาใด ๆ ที่เป็นจริง ไม่มี แตก จำเป็นในกรณีเริ่มต้น
โค้ดตัวอย่าง
#include <stdio.h> int main () { /* local variable definition */ char grade = 'B'; switch(grade) { case 'A' : printf("Excellent!\n" ); break; case 'B' : case 'C' : printf("Well done\n" ); break; case 'D' : printf("You passed\n" ); break; case 'F' : printf("Better try again\n" ); break; default : printf("Invalid grade\n" ); } printf("Your grade is %c\n", grade ); return 0; }
ผลลัพธ์
Well done Your grade is B