The (int)x คือการพิมพ์แบบ C โดยที่ static_cast
ใน C เช่น cast บางครั้งเราสามารถส่งตัวชี้บางประเภทเพื่อชี้ข้อมูลประเภทอื่น เช่นเดียวกับตัวชี้จำนวนเต็มตัวเดียวก็สามารถชี้ข้อมูลประเภทอักขระได้เช่นกัน เนื่องจากมีความคล้ายคลึงกัน ความแตกต่างเพียงอย่างเดียวคืออักขระมี 1 ไบต์ จำนวนเต็มมี 4 ไบต์ ใน C ++ static_cast<>() จะเข้มงวดกว่า C เหมือนกับการแคสต์ มันแปลงระหว่างประเภทที่เข้ากันได้เท่านั้น
โค้ดตัวอย่าง
char c = 65; //1-byte data. ASCII of ‘A’ int *ptr = (int*)&c; //4-byte
เนื่องจากในพอยเตอร์ขนาด 4 ไบต์ จะชี้ไปที่หน่วยความจำที่จัดสรรไว้ 1 ไบต์ จึงอาจสร้างข้อผิดพลาดรันไทม์หรือจะเขียนทับหน่วยความจำที่อยู่ติดกันบางส่วน
ใน C ++ static_cast<>() จะอนุญาตให้คอมไพเลอร์ตรวจสอบว่าตัวชี้และข้อมูลเป็นประเภทเดียวกันหรือไม่ หากไม่เป็นเช่นนั้น จะทำให้เกิดข้อยกเว้นการกำหนดตัวชี้ที่ไม่ถูกต้องระหว่างการคอมไพล์
char c = 65; //1-byte data. ASCII of ‘A’ int *ptr = static_cast<int>(&c);
สิ่งนี้จะทำให้เกิดข้อผิดพลาดในการคอมไพล์