Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

เปลี่ยนคำสั่งกรณีในC


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