Ternary Operator ใน C อธิบาย

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

ตัวดำเนินการ ternary รับสามอาร์กิวเมนต์:

  1. ประการแรกคืออาร์กิวเมนต์เปรียบเทียบ
  2. ประการที่สองคือผลลัพธ์จากการเปรียบเทียบที่แท้จริง
  3. ประการที่สามคือผลลัพธ์จากการเปรียบเทียบที่ผิดพลาด

ช่วยให้คิดว่าตัวดำเนินการด้านท้ายเป็นวิธีชวเลขหรือเขียนคำสั่ง if-else นี่คือตัวอย่างการตัดสินใจง่ายๆโดยใช้if and else :

int a = 10, b = 20, c; if (a < b) { c = a; } else { c = b; } printf("%d", c);

ตัวอย่างนี้ใช้เวลามากกว่า 10 บรรทัด แต่ไม่จำเป็น คุณสามารถเขียนโปรแกรมข้างต้นด้วยโค้ดเพียง 3 บรรทัดโดยใช้ตัวดำเนินการ ternary

ไวยากรณ์

condition ? value_if_true : value_if_false

คำสั่งจะประเมินvalue_if_trueว่าconditionเป็นไปตามเงื่อนไขvalue_if_falseหรือไม่

นี่คือตัวอย่างข้างต้นที่เขียนขึ้นใหม่เพื่อใช้ตัวดำเนินการ ternary:

int a = 10, b = 20, c; c = (a < b) ? a : b; printf("%d", c);

ผลลัพธ์ของตัวอย่างข้างต้นควรเป็น:

10

cถูกกำหนดให้เท่ากับaเนื่องจากเงื่อนไขa < bเป็นจริง

โปรดจำไว้ว่าอาร์กิวเมนต์value_if_trueและvalue_if_falseต้องเป็นประเภทเดียวกันและต้องเป็นนิพจน์ทั่วไปแทนที่จะเป็นคำสั่งแบบเต็ม

สามารถซ้อนตัวดำเนินการ Ternary ได้เช่นเดียวกับคำสั่ง if-else พิจารณารหัสต่อไปนี้:

int a = 1, b = 2, ans; if (a == 1) { if (b == 2) { ans = 3; } else { ans = 5; } } else { ans = 0; } printf ("%d\n", ans);

นี่คือโค้ดด้านบนที่เขียนใหม่โดยใช้ตัวดำเนินการ ternary ที่ซ้อนกัน:

int a = 1, b = 2, ans; ans = (a == 1 ? (b == 2 ? 3 : 5) : 0); printf ("%d\n", ans);

ผลลัพธ์ของโค้ดทั้งสองชุดด้านบนควรเป็น:

3