เนื่องจากคุณไม่ได้ใช้คำต่อท้ายตัวอักษร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หาร