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 ก่อนเปรียบเทียบ)