เนื่องจากคุณไม่ได้ใช้คำต่อท้ายตัวอักษร13
และ4
ถูกตีความเป็นจำนวนเต็ม:
คู่มือ :
int
ถ้าตัวอักษรไม่ได้มีคำต่อท้ายก็มีครั้งแรกของประเภทนี้ที่คุ้มค่าสามารถแสดง: uint
, long
, ulong
,
ดังนั้นเนื่องจากคุณประกาศ13
เป็นจำนวนเต็มการหารจำนวนเต็มจะดำเนินการ:
คู่มือ :
สำหรับการดำเนินการของรูปแบบ x / y ความละเอียดเกินพิกัดของตัวดำเนินการไบนารีจะถูกนำไปใช้เพื่อเลือกการใช้งานตัวดำเนินการเฉพาะ ตัวถูกดำเนินการจะถูกแปลงเป็นประเภทพารามิเตอร์ของตัวดำเนินการที่เลือกและประเภทของผลลัพธ์คือประเภทการส่งคืนของตัวดำเนินการ
ตัวดำเนินการแบ่งที่กำหนดไว้ล่วงหน้าแสดงอยู่ด้านล่าง ตัวดำเนินการทั้งหมดคำนวณผลหารของ x และ y
การหารจำนวนเต็ม:
int operator /(int x, int y);
uint operator /(uint x, uint y);
long operator /(long x, long y);
ulong operator /(ulong x, ulong y);
และการปัดเศษเกิดขึ้น:
การหารจะปัดเศษผลลัพธ์ให้เป็นศูนย์และค่าสัมบูรณ์ของผลลัพธ์คือจำนวนเต็มมากที่สุดที่เป็นไปได้ซึ่งน้อยกว่าค่าสัมบูรณ์ของผลหารของตัวถูกดำเนินการสองตัว ผลลัพธ์จะเป็นศูนย์หรือเป็นบวกเมื่อตัวถูกดำเนินการทั้งสองมีเครื่องหมายเดียวกันและเป็นศูนย์หรือเป็นลบเมื่อตัวถูกดำเนินการทั้งสองมีเครื่องหมายตรงกันข้าม
หากคุณทำสิ่งต่อไปนี้:
int x = 13f / 4f;
คุณจะได้รับข้อผิดพลาดของคอมไพเลอร์เนื่องจากการหารทศนิยม (ตัว/
ดำเนินการของ13f
) ส่งผลให้เกิดการลอยซึ่งไม่สามารถส่งเป็น int โดยปริยายได้
หากคุณต้องการให้การหารเป็นทศนิยมคุณจะต้องทำให้ผลลัพธ์เป็นแบบลอย:
float x = 13 / 4;
สังเกตว่าคุณจะยังคงหารจำนวนเต็มซึ่งโดยปริยายจะถูกเหวี่ยงให้ลอย: ผลลัพธ์จะเป็น 3.0
ผลจะเป็น ในการประกาศตัวถูกดำเนินการเป็น float อย่างชัดเจนโดยใช้f
คำต่อท้าย ( 13f
, 4f
)
integer
ไม่ใช่การfloating point
หาร