Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การกำหนดค่า Integer ให้ Float และการเปรียบเทียบใน C/C++

Integer คือชนิดข้อมูลสำหรับจำนวนเต็ม (บวก, ลบ, 0) ไม่มีทศนิยม

Float คือชนิดข้อมูลสำหรับจำนวนจริง มีส่วนทศนิยม

ลองดูค่าที่คอมไพเลอร์คืนเมื่อกำหนดค่าเดียวกันให้ทั้ง int และ float

ตัวอย่าง 1: กำหนดค่าเต็มให้ทั้งคู่

float f = 23;
unsigned int x = 23;
// ผลลัพธ์: f = 23, x = 23 (เหมือนกัน)

f = 0xffffffff;  // 4294967295
x = 0xffffffff;
// ผลลัพธ์: f = 4.29497e+09, x = 4294967295 (ต่างกัน! float ไม่เก็บค่าที่ใหญ่เกิน precision ได้)

เมื่อกำหนดค่า integer ให้ float จะทำงานเหมือน integer แต่ค่าสูงสุดต่างกันเพราะ float มี precision จำกัด

ตัวอย่าง 2: กำหนดค่าทศนิยมให้ int

float f = 23.768;
unsigned int x = 23.768;
// ผลลัพธ์: f = 23.768, x = 23 (int ตัดทศนิยมทิ้ง)

ตัวอย่าง 3: เปรียบเทียบ float และ int

float f = 0xffffffff;
unsigned int x = 0xffffffff;
if (f == x) printf("TRUE"); else printf("FALSE");
// ผลลัพธ์: TRUE (คอมไพเลอร์แปลง int เป็น float ก่อนเปรียบเทียบ)