มันไม่มีสิ่งที่เรียกว่า"การคัดเลือกนักแสดงคำสั่ง"เพราะคนประเภทของการแสดงขึ้นอยู่กับมัน operands. วางมันก็แค่ถ้าเป็นเลขฐานสองรวมอัตโนมัติโอเปอเรเตอร์ยอมรับสองคน operands ที่แตกต่างกันประเภทแล้วก็ลดลงประเภทจะ implicitly แปลงไปที่กว้างกประเภท
ใน result = static_cast<double>(1 / (i+1))
มันต่างๆที่วิเคราะห์เหมือนนี้
i + 1
เป็ int
แสดงตั้งแต่ทั้งสอง i
แล้ว 1
เป็นประเภท int
1 / (i + 1)
จะคืนค่าเป็น int ได้สำหรับเหตุผลเดียวกับ
- งั้นผลของ
1 / (i + 1)
คือ statically แสดงให้ double
OTOH ใน result = 1 / (i+static_cast<double>(1))
มันเหมือนนี้
1
ได่ถูกต้อง double
i + static_cast<double>(1)
กลับมา double
เพราะว่า i
ได่ถูกต้อง double
เนื่องจากคนอื่น operand
1 / (i+static_cast<double>(1))
เป็ double
สำนวนสำหรับเหตุผลเดียวกับ
แต่ไม่มีใครแสดงแบบนั้น มันจะดีกว่าต้องทำ 1 / (i + 1.0)
แทนที่จะเป็น
กฏข้อที่สมบูรณ์แบเป็นแบบนี้
- ถ้าเหมือนกั operand คนหาข้อมูล enumeration ประเภทไม่มีการแปลงเป็นแสดง:อี operand และกลับประเภทต้องมีคนประเภทเดียวกัน
- ไม่อย่างนั้นถ้าเหมือนกั operand คือ
long double
อีกคน operand เป็นแปลงไป long double
- ไม่อย่างนั้นถ้าเหมือนกั operand คือ
double
อีกคน operand เป็นแปลงไป double
- ไม่อย่างนั้นถ้าเหมือนกั operand คือ
float
อีกคน operand เป็นแปลงไป float
- ไม่เช่นนั้น operand มีจำนวนเต็มประเภท(เพราะ
bool
, char
, char8_t
, char16_t
, char32_t
, wchar_t
และ unscoped enumeration ถูกเลื่อนขั้นตอนนี้)และ integral conversions คือสมัครจะผลิตมันเป็นห้องประเภทที่ติดตาม:
- ถ้าทั้งสอง operands เป็นเซ็นหรือสองอย่างไม่ต้องเซ็นที่ operand กับน้อยกว่าการแปลงตำแหน่งเป็นแปลงไปที่ operand กับคนมากกว่าจำนวนเต็มการแปลงตำแหน่ง
- ไม่อย่างนั้นถ้าไม่ต้องเซ็น operand เป็น การแปลงตำแหน่ง เป็นมากกว่าหรือเท่ากับการแปลงตำแหน่งของเซ็น operand ที่เซ็น operand เป็นแปลงไปโดยไม่เซ็น operand เป็นแบบนั้น
- ไม่อย่างนั้นถ้าเซ็น operand เป็นประเภทสามารถเป็นตัวแทนของทั้งค่าต่างๆของโดยไม่เซ็น operand ที่ไม่ต้องเซ็น operand เป็นแปลงไปที่เซ็น operand เป็นประเภท
- ไม่อย่างนั้นทั้งสอง operands เป็นแปลงไปโดยไม่เซ็นที่เป็นคู่มือของเซ็น operand เป็นแบบนั้น
ใน การแปลงตำแหน่ง อยู่เหนือยิ่งเพิ่มในคำสั่ง bool
, signed char
, short
, int
, long
, long long
. ที่ตำแหน่งของโดยไม่เซ็นประเภทมันจะเท่ากับตำแหน่งของที่สัมพันธ์กันเซ็นต์แบบนั้น ที่ตำแหน่งของ char
มันจะเท่ากับตำแหน่งของ signed char
แล้ว unsigned char
. แบบของ char8_t
, char16_t
, char32_t
แล้ว wchar_t
นี่เท่ากับต้นแบบของพวกเขา underlying ยชนิด
รวมอัตโนมัติ operators