C++ Ternary Operator

C Ternary Operator



“ตัวดำเนินการตามเงื่อนไขและคำสั่ง if-else ต่างก็ใช้เทคนิคเดียวกัน แต่ตัวดำเนินการแบบมีเงื่อนไขจะทำให้นิพจน์ if-else สั้นที่สุดเท่าที่จะเป็นไปได้ในขณะที่นิพจน์ if-else ใช้พื้นที่มากขึ้น ในภาษาโปรแกรมบางภาษา มีโอเปอเรเตอร์ที่เรียกว่า ternary operator ที่ยอมรับตัวถูกดำเนินการสามตัว ซึ่งต่างจากตัวดำเนินการปกติหนึ่งหรือสองตัวที่ตัวดำเนินการส่วนใหญ่ต้องการ มันเสนอวิธีการควบแน่นบล็อก if-else พื้นฐาน ในคู่มือนี้ ตัวดำเนินการ ternary ใน C++ จะกล่าวถึงในตัวอย่าง ในบางกรณี คำสั่ง if else ในแอปพลิเคชัน C++ สามารถแทนที่ด้วยตัวดำเนินการ ternary ซึ่งมักเรียกว่าตัวดำเนินการตามเงื่อนไข”

ไวยากรณ์ของ Ternary Operator ใน C++

ตัวถูกดำเนินการสามตัวจำเป็นสำหรับตัวดำเนินการ ternary: เงื่อนไข ความจริง และเท็จ ในขณะที่ตัวดำเนินการ ternary วิเคราะห์เงื่อนไขการทดสอบและรันบล็อกของโค้ดตามผลลัพธ์ ไวยากรณ์คือ:

# (exp_1) ? exp_2 : exp_3

ที่นี่ 'exp' หมายถึงนิพจน์ ขึ้นอยู่กับผลลัพธ์ของนิพจน์ ตัวดำเนินการนี้ส่งกลับค่าใดค่าหนึ่งจากสองค่า นิพจน์ 2 และ 3 จะถูกประเมิน และค่าของพวกมันจะถูกส่งกลับเป็นผลลัพธ์สุดท้าย ถ้า “exp_1” ถูกประเมินว่าเป็นจริงบูลีน มิฉะนั้น นิพจน์ 1 จะถูกประเมินเป็นเท็จบูลีน และนิพจน์ 2 จะถูกประเมิน และค่าของนิพจน์นั้นจะถูกส่งกลับเป็นผลลัพธ์สุดท้าย







ตัวอย่าง 1

นี่คือตัวอย่างโปรแกรมที่ตรงไปตรงมาที่แสดงวิธีใช้ Ternary Operator ของ C++



#include

#include

ใช้เนมสเปซ std ;

int หลัก ( ) {
สองเท่า CGPA ;
ศาล <> CGPA ;

สตริง student_result = ( CGPA >= 1.5 ) ? 'ผ่าน' : 'ล้มเหลว' ;

ศาล << 'คุณ ' << นักเรียน_result << ' เทอม.' ;

กลับ 0 ;
}



ในโปรแกรม เราได้เติมส่วนหัวของเราด้วยไลบรารี C++ หลังจากนั้น เราได้เพิ่มเนมสเปซ std ด้วยคีย์เวิร์ด “using” จากนั้น ตัวแปร “CGPA” ที่มีประเภทของข้อมูล “double” ได้ถูกประกาศอยู่ภายในนั้น ในบรรทัดถัดไป เราได้ขอให้ผู้ใช้ป้อน CGPA โดยพิมพ์คำสั่ง cout ด้วยคำสั่ง cin ผู้ใช้จะเพิ่ม CGPA





จากนั้น เราได้สร้างตัวแปรอื่น 'student_result' ที่มีตัวดำเนินการแบบไตรภาค ตัวดำเนินการ ternary ต้องการสามนิพจน์ที่นี่ อย่างแรกคือเงื่อนไขที่ตรวจสอบว่า CGPA ที่ผู้ใช้ป้อนมากกว่าหรือเท่ากับ “1.5” ถ้าเป็นเช่นนั้น คำสั่ง 'ผ่าน' จะถูกพิมพ์ มิฉะนั้น นิพจน์ที่สามจะถูกพิมพ์ ผลลัพธ์จะปรากฏขึ้นเมื่อคุณใช้คำสั่ง cout

สมมติว่าผู้ใช้พิมพ์ CGPA “3.5” CGPA >= 1.5 แล้วประเมินว่าเป็นจริง โดยเป็นไปตามเกณฑ์ ดังนั้นผลลัพธ์จะได้รับคำว่า 'ผ่าน' ในระยะแรก



สมมติว่าผู้ใช้พิมพ์ 1.00 เป็นผลให้มีการประเมินเงื่อนไข CGPA >= 1.5 อย่างไม่ถูกต้อง ดังนั้นผลลัพธ์จะได้รับนิพจน์ที่สอง 'ล้มเหลว'

ตัวอย่าง 2

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

#include

ใช้เนมสเปซ std ;

int หลัก ( ) {

int หนึ่ง = - 3 ;
ศาล << 'หนึ่ง :' < 0 )
ศาล << ' \n จำนวนเต็มบวก' ;
อื่น
ศาล << ' \n จำนวนเต็มลบ!' ;

กลับ 0 ;
}

เราได้ประกาศและเริ่มต้นตัวแปรชนิดข้อมูล int “num” ด้วยค่าจำนวนเต็มลบ หลังจากนั้นด้วยคำสั่ง cout ค่า 'num' จะถูกพิมพ์ แล้วเราจะได้เงื่อนไข if-else ภายในเงื่อนไข “if” เราได้ระบุเงื่อนไขว่าตัวแปร “num” ควรมากกว่าค่าศูนย์ หากเงื่อนไขเป็นจริง คำสั่ง cout หลังจากเงื่อนไข “if” จะถูกพิมพ์ออกมา หากเงื่อนไขกลายเป็นเท็จ คำสั่ง else cout จะถูกพิมพ์ออกมา

เนื่องจากตัวเลขเป็นค่าลบ เงื่อนไข if จะกลายเป็นเท็จและ

ต่อไป เรารันโปรแกรมข้างต้นด้วยโอเปอเรเตอร์ไตรภาค ลองตรวจสอบดูว่าเงื่อนไข if-else และตัวดำเนินการ ternary มีผลเหมือนกันหรือไม่

#include

#include

ใช้เนมสเปซ std ;

int หลัก ( ) {

int MyNum = - 7 ;
ศาล << 'จำนวนเต็ม:' << MyNum < 0 ) ? 'จำนวนเต็มบวก!' : 'จำนวนเต็มลบ!' ;
ศาล << ผล << endl ;

กลับ 0 ;
}

เราได้ประกาศตัวแปร 'MyNum' และเริ่มต้นด้วยค่าลบ เราได้พิมพ์ค่าลบโดยการเรียกตัวแปร 'MyNum' ภายในคำสั่ง cout จากนั้นเราตั้งค่าตัวแปรอื่นเป็น 'ผลลัพธ์' ด้วยประเภทสตริง ตัวแปรผลลัพธ์ใช้การดำเนินการตัวดำเนินการแบบไตรภาค อันดับแรก เรามีเงื่อนไขว่า “MyNum” ควรมากกว่าศูนย์ หลังจากนั้นเราใส่โอเปอเรเตอร์แบบไตรภาค “?” อีกสองนิพจน์จะถูกดำเนินการตามผลลัพธ์ของเงื่อนไข

เนื่องจากค่าจำนวนเต็มคือ '-7' นิพจน์ที่สาม 'จำนวนเต็มลบ!' ถูกพิมพ์บนพรอมต์ ที่นี่ผลลัพธ์จากทั้งสองแอปพลิเคชันจะเหมือนกัน อย่างไรก็ตาม ตัวดำเนินการแบบไตรภาคช่วยปรับปรุงความสามารถในการอ่านและความสะอาดของโค้ดของเรา

ตัวอย่างที่ 3

นอกจากนี้ สามารถใช้ตัวดำเนินการแบบไตรภาคอยู่ภายในกันได้ ใช้ตัวดำเนินการ ternary ที่ซ้อนกันเพื่อตรวจสอบว่าค่าเป็นบวก ลบ หรือศูนย์ในโปรแกรมต่อไปนี้

#include

#include

ใช้เนมสเปซ std ;

int หลัก ( ) {
int จำนวนเต็ม = 0 ;
ผลลัพธ์สตริง ;

ผลลัพธ์ = ( จำนวนเต็ม == 0 ) ? 'ศูนย์' : ( ( จำนวนเต็ม > 0 ) ? 'เชิงบวก' : 'เชิงลบ' ) ;

ศาล << 'จำนวนเต็มคือ' << ผลลัพธ์ ;

กลับ 0 ;
}

เพียงแค่เริ่มต้นด้วยวิธีการหลักของโปรแกรม ใน int main() เราได้สร้างตัวแปรด้วยชื่อ 'integer' และตั้งค่าเป็นศูนย์ จากนั้น เรากำหนดตัวแปรอื่น 'ผลลัพธ์' ด้วยสตริงประเภทข้อมูล เราได้ตั้งค่าตัวแปร 'ผลลัพธ์' โดยข้ามโอเปอเรเตอร์ที่ประกอบไปด้วย เงื่อนไขคือค่าตัวแปร 'จำนวนเต็ม' ควรเท่ากับศูนย์ 'จำนวนเต็ม == 0' เงื่อนไขเริ่มต้น (จำนวนเต็ม == 0) กำหนดว่าจำนวนเต็มที่กำหนดเป็นศูนย์หรือไม่ หากเป็นเช่นนั้น ผลลัพธ์จะได้รับค่าสตริงเป็น 'Zero' ถ้าคำตอบนั้นถูกต้อง มิฉะนั้น หากเงื่อนไขแรกเป็นเท็จ เงื่อนไขที่สอง (จำนวนเต็ม > 0) จะถูกตรวจสอบ

ใช่ จำนวนเต็มที่ระบุเป็นศูนย์ตามที่แสดงในสคริปต์ ผลลัพธ์จะสร้าง 'จำนวนเต็มเป็นศูนย์'

บทสรุป

เราทราบดีว่าตัวดำเนินการแบบมีเงื่อนไขคือตัวดำเนินการแบบไตรภาค ด้วยความช่วยเหลือของโอเปอเรเตอร์นี้ เราสามารถตรวจสอบเงื่อนไขและดำเนินการตามนั้นได้ เราอาจทำสิ่งเดียวกันให้สำเร็จโดยใช้เงื่อนไข if-else แทนตัวดำเนินการ ternary กวดวิชา C ++ นี้สอนวิธีใช้ Ternary Operator ผ่านไวยากรณ์และโปรแกรมตัวอย่าง โปรดทราบว่าต้องใช้ตัวดำเนินการ ternary เฉพาะในกรณีที่คำสั่งสุดท้ายกระชับ