สวิตช์ คำสั่งอนุญาตให้ทดสอบตัวแปรเพื่อความเท่าเทียมกันกับรายการค่า แต่ละค่าเรียกว่า 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