สวัสดีผู้ชื่นชอบเทคโนโลยี! ในฐานะซัพพลายเออร์สวิตช์ ฉันมักจะถูกถามคำถามที่น่าสนใจเกี่ยวกับสวิตช์ ไม่ใช่แค่คำถามทางกายภาพที่เราจัดหาให้เท่านั้น แต่ยังรวมถึงโครงสร้างการเขียนโปรแกรมที่ตั้งชื่อตามสวิตช์เหล่านั้นด้วย คำถามหนึ่งที่โผล่ขึ้นมาเมื่อเร็ว ๆ นี้ก็คือ "คำสั่ง switch สามารถมีหลายตัวพิมพ์ที่มีค่าเท่ากันใน C ++ ได้หรือไม่" มาดำดิ่งลงไปในมันกัน
พื้นฐานของคำสั่ง Switch ใน C ++
ก่อนอื่น เรามาดูกันก่อนว่าคำสั่ง switch คืออะไรในภาษา C++ คำสั่ง switch คือคำสั่ง control flow ในภาษา C++ ที่อนุญาตให้โปรแกรมประเมินนิพจน์ จากนั้นรันคำสั่งใดคำสั่งหนึ่งจากหลายๆ คำสั่งที่เป็นไปได้ตามค่าของนิพจน์นั้น มันเป็นทางเลือกที่สะอาดกว่าโซ่ยาวของถ้า-อย่างอื่นคำสั่งเมื่อคุณเปรียบเทียบตัวแปรตัวเดียวกับค่าคงที่หลายค่า
นี่เป็นตัวอย่างง่ายๆ ของคำสั่ง switch ใน C++:


#include <iostream> int main() { int วัน = 3; switch (วัน) { กรณีที่ 1: std::cout << "วันจันทร์"; หยุดพัก; กรณีที่ 2: std::cout << "วันอังคาร"; หยุดพัก; กรณีที่ 3: std::cout << "วันพุธ"; หยุดพัก; ค่าเริ่มต้น: std::cout << "วันที่ไม่ถูกต้อง"; - กลับ 0; -
ในตัวอย่างนี้สวิตช์คำสั่งประเมินตัวแปรวัน- ถ้าวันเท่ากับ 1 จะพิมพ์ว่า "วันจันทร์" ถ้าเป็น 2 จะพิมพ์ว่า "วันอังคาร" เป็นต้น ที่ค่าเริ่มต้นcase จะถูกดำเนินการหากไม่มีสิ่งใดเลยกรณีค่าตรงกับนิพจน์
คุณสามารถมีหลายกรณีที่มีมูลค่าเท่ากันได้หรือไม่
ตอนนี้คำถามใหญ่: คำสั่ง switch สามารถมีหลายกรณีที่มีค่าเดียวกันในภาษา C ++ ได้หรือไม่? คำตอบสั้น ๆ คือไม่ C ++ ไม่อนุญาตให้มีหลายรายการกรณีป้ายกำกับที่มีค่าคงที่เหมือนกันภายในป้ายเดียวสวิตช์คำแถลง. หากคุณพยายามทำสิ่งนี้:
#include <iostream> int main() { int num = 2; สวิตช์ (หมายเลข) { กรณีที่ 1: std::cout << "หนึ่ง"; หยุดพัก; กรณีที่ 2: std::cout << "สอง"; หยุดพัก; กรณีที่ 2: // สิ่งนี้จะทำให้เกิดข้อผิดพลาดในการคอมไพล์ std::cout << "Another Two"; หยุดพัก; ค่าเริ่มต้น: std::cout << "อื่นๆ"; - กลับ 0; -
คุณจะได้รับข้อผิดพลาดในการรวบรวม คอมไพเลอร์จะบ่นเกี่ยวกับค่าตัวพิมพ์ที่ซ้ำกัน เหตุผลเบื้องหลังข้อจำกัดนี้คือเพื่อหลีกเลี่ยงความคลุมเครือ หากมีหลายกรณีที่มีค่าเท่ากัน คอมไพเลอร์จะไม่ทราบว่าจะต้องดำเนินการกรณีใดเมื่อนิพจน์ตรงกับค่านั้น
วิธีแก้ปัญหา
แต่ถ้าคุณต้องการรันโค้ดเดียวกันสำหรับหลายค่าล่ะ? คุณสามารถจัดกลุ่มได้หลายรายการกรณีฉลากด้วยกัน มีวิธีดังนี้:
#include <iostream> int main() { int num = 2; สวิตช์ (หมายเลข) { กรณีที่ 1: std::cout << "หนึ่ง"; หยุดพัก; กรณีที่ 2: กรณีที่ 3: std::cout << "สองหรือสาม"; หยุดพัก; ค่าเริ่มต้น: std::cout << "อื่นๆ"; - กลับ 0; -
ในตัวอย่างนี้ ถ้าในคือ 2 หรือ 3 ซึ่งเป็นโค้ดที่อยู่ในกลุ่มกรณีป้ายกำกับจะถูกดำเนินการ นี่เป็นวิธีที่ถูกต้องและมีประโยชน์อย่างยิ่งในการจัดการกับค่าหลายค่าที่ควรทริกเกอร์การกระทำเดียวกัน
เหตุใดจึงมีความสำคัญในการเขียนโปรแกรมในโลกแห่งความเป็นจริง
ทำความเข้าใจกับกฎเกณฑ์ของสวิตช์คำสั่งเป็นสิ่งสำคัญสำหรับการเขียนโค้ดที่สะอาดและปราศจากข้อบกพร่อง ในโปรเจ็กต์ขนาดใหญ่ ข้อผิดพลาดในการคอมไพล์เพียงครั้งเดียวอาจทำให้เสียเวลาได้มาก โดยรู้ว่าคุณไม่สามารถมีซ้ำได้กรณีค่านิยม คุณสามารถหลีกเลี่ยงข้อผิดพลาดทั่วไปนี้ได้
อีกทั้งความสามารถในการจัดกลุ่มกรณีป้ายกำกับสามารถทำให้โค้ดของคุณกระชับและอ่านง่ายขึ้น แทนที่จะเขียนโค้ดเดียวกันหลายครั้งสำหรับค่าที่ต่างกัน คุณสามารถจัดกลุ่มค่าที่เกี่ยวข้องได้กรณีฉลากด้วยกัน
ผลิตภัณฑ์สวิตช์ของเรา
ในฐานะซัพพลายเออร์สวิตช์ เรานำเสนอสวิตช์คุณภาพสูงที่หลากหลายสำหรับการใช้งานที่หลากหลาย หนึ่งในผลิตภัณฑ์ยอดนิยมของเราคือสวิตช์ความดันอิเล็กทรอนิกส์- สวิตช์นี้ออกแบบมาเพื่อวัดและควบคุมแรงดันในระบบต่างๆ ได้อย่างแม่นยำ มีความน่าเชื่อถือ ติดตั้งง่าย และมาพร้อมกับคุณสมบัติขั้นสูงที่ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการใช้งานในอุตสาหกรรมและเชิงพาณิชย์
ไม่ว่าคุณจะทำงานในโครงการ DIY ขนาดเล็กหรือระบบอุตสาหกรรมขนาดใหญ่ สวิตช์ของเราถูกสร้างขึ้นมาเพื่อตอบสนองความต้องการของคุณ เรามีความภาคภูมิใจในการนำเสนอผลิตภัณฑ์ชั้นยอดและการบริการลูกค้าที่เป็นเลิศ
ติดต่อเราเพื่อสอบถามความต้องการสวิตช์ของคุณ
หากคุณอยู่ในตลาดสวิตช์ ไม่ว่าจะเป็นสำหรับการเขียนโปรแกรมหรือแอปพลิเคชันทางกายภาพ เรายินดีรับฟังจากคุณ ทีมผู้เชี่ยวชาญของเราสามารถช่วยคุณค้นหาสวิตช์ที่เหมาะกับความต้องการเฉพาะของคุณได้ อย่าลังเลที่จะติดต่อและเริ่มการสนทนาเกี่ยวกับโครงการของคุณ เราอยู่ที่นี่เพื่อให้แน่ใจว่าคุณจะได้รับสวิตช์ที่ดีที่สุดในราคาที่ดีที่สุด
อ้างอิง
- สตรัวสตรัป, บีจาร์น. "ภาษาการเขียนโปรแกรม C++" แอดดิสัน-เวสลีย์ โปรเฟสชันแนล, 2013
- ลิปป์แมน, สแตนลีย์ บี., โฮเซ่ ลาจอย และบาร์บารา อี. มู "ซี++ ไพรเมอร์" แอดดิสัน-เวสลีย์ โปรเฟสชันแนล, 2012
