0Pricing
C++ Academy · บทเรียน

การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case

เลือกใช้ชุดคำสั่ง if-else นิพจน์สามส่วน หรือคำสั่ง switch เพื่อแยกแขนงอย่างชัดเจน

การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คำสั่ง if

นี่คือเงื่อนไขพื้นฐาน บล็อกคำสั่งจะทำงานเมื่อเงื่อนไขเป็นจริง วงเล็บปีกกาไม่จำเป็นสำหรับคำสั่งเดียว แต่แนะนำให้ใช้เสมอ

int score = 85;
if (score >= 60) {
    std::cout << "Pass\n";
}

สายโซ่ if-else

ทดสอบทางเลือกด้วย else if และปิดท้ายด้วย else สาขาแรกที่เป็นจริงจะทำงาน

if (score >= 90) std::cout << "A";
else if (score >= 80) std::cout << "B";
else if (score >= 70) std::cout << "C";
else std::cout << "F";

เงื่อนไขบูลีน

นิพจน์ใด ๆ ที่แปลงเป็น bool ได้สามารถใช้ได้ พอยน์เตอร์จะถูกประเมินเป็นเท็จเมื่อเป็นค่าว่าง และจำนวนเต็มจะเป็นเท็จเมื่อมีค่าเป็นศูนย์ ควรเขียนให้ชัดเจนเพื่อให้อ่านเข้าใจง่าย

การประกาศค่าเริ่มต้นใน if (C++17)

C++17 อนุญาตให้ประกาศตัวแปรภายใน if ได้ ตัวแปรนั้นจะอยู่ในขอบเขตของบล็อก if-else

if (auto it = map.find(key); it != map.end()) {
    std::cout << it->second;
}

ตัวดำเนินการสามส่วน

condition ? a : b จะคืนค่าหนึ่งจากสองค่า เหมาะอย่างยิ่งสำหรับทางเลือกง่าย ๆ แต่ไม่เหมาะกับตรรกะที่ซ้อนกันหลายชั้น

int max = (a > b) ? a : b;
std::string msg = (n == 1) ? "item" : "items";

หลีกเลี่ยงตัวดำเนินการสามส่วนที่ซ้อนกัน

ตัวดำเนินการสามส่วนที่ซ้อนกันอ่านเข้าใจได้ยาก ควรใช้ if-else หรือแยกตรรกะออกเป็นฟังก์ชันช่วยเหลือแทน

// Hard to read
auto label = (n < 0) ? "neg" : (n == 0) ? "zero" : "pos";

// Clearer
std::string label;
if (n < 0) label = "neg";
else if (n == 0) label = "zero";
else label = "pos";

คำสั่ง switch

ใช้เปรียบเทียบค่าหนึ่งค่ากับค่าคงที่หลายค่า แต่ละสาขาต้องมี break เพื่อป้องกันไม่ให้การทำงานไหลต่อไปยัง case ถัดไป

switch (day) {
    case 1: std::cout << "Mon"; break;
    case 2: std::cout << "Tue"; break;
    default: std::cout << "?";  break;
}

การไหลต่อโดยตั้งใจ

จัดกลุ่มหลาย case ที่ใช้โค้ดร่วมกัน C++17 เพิ่ม [[fallthrough]] เพื่อใช้เป็นเครื่องหมายบอกคอมไพเลอร์

switch (c) {
    case 'a': case 'e': case 'i': case 'o': case 'u':
        std::cout << "vowel"; break;
    default:
        std::cout << "consonant";
}

ข้อจำกัดของ switch

switch ใช้ได้เฉพาะชนิดจำนวนเต็มและชนิด enum สำหรับสตริง ให้ใช้ if-else หรือแฮชแมป

ตัวเริ่มต้นใน switch (C++17)

เช่นเดียวกับ if คุณสามารถประกาศตัวแปรภายในส่วนหัวของ switch ได้

switch (auto value = compute(); value) {
    case 0: ...
    default: ...
}

รูปแบบ: ตารางค้นหา

สำหรับสาขาที่ใช้สตริงเป็นคีย์ std::unordered_map อาจอ่านเข้าใจง่ายกว่าสายโซ่ if-else

std::unordered_map<std::string, std::function<void()>> commands = {
    {"start", []{ start(); }},
    {"stop",  []{ stop();  }}
};
if (auto it = commands.find(cmd); it != commands.end())
    it->second();

ตรวจสอบอย่างรวดเร็ว

จะเกิดอะไรขึ้นหาก case ใน switch ไม่มี break และ case ถัดไปมีคำสั่งอยู่

สรุปทบทวน

ใช้ if-else สำหรับการแตกแขนงทั่วไป ใช้ตัวดำเนินการสามส่วนสำหรับทางเลือกค่าที่สั้นกระชับ และใช้ switch เมื่อต้องเปรียบเทียบค่าหนึ่งค่ากับค่าคงที่จำนวนเต็มหลายค่า คำสั่งเริ่มต้นใน C++17 ช่วยจัดการขอบเขตให้เป็นระเบียบขึ้น

คำถามที่พบบ่อย

บทเรียน “การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case”

เลือกใช้ชุดคำสั่ง if-else นิพจน์สามส่วน หรือคำสั่ง switch เพื่อแยกแขนงอย่างชัดเจน คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case
  2. รูปแบบลูป: for, while, do-while
  3. ลูป for แบบอิงช่วงกับคอนเทนเนอร์
  4. การคืนค่าก่อนกำหนด break continue และ goto
← กลับไปที่ C++ Academy