การแยกแขนง: 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การแยกแขนง: if-else, นิพจน์สามส่วน, switch-case
- รูปแบบลูป: for, while, do-while
- ลูป for แบบอิงช่วงกับคอนเทนเนอร์
- การคืนค่าก่อนกำหนด break continue และ goto