(int) x là kiểu gõ kiểu C trong đó static_cast
Trong C như ép kiểu đôi khi chúng ta có thể ép kiểu một số con trỏ kiểu để trỏ một số dữ liệu kiểu khác. Giống như một con trỏ số nguyên cũng có thể trỏ dữ liệu kiểu ký tự, vì chúng khá giống nhau, chỉ khác là ký tự có 1 byte, số nguyên có 4 byte. Trong C ++, static_cast <> () nghiêm ngặt hơn C như ép kiểu. Nó chỉ chuyển đổi giữa các loại tương thích.
Mã mẫu
char c = 65; //1-byte data. ASCII of ‘A’ int *ptr = (int*)&c; //4-byte
Vì trong con trỏ 4 byte, nó trỏ đến 1 byte bộ nhớ được cấp phát, nó có thể tạo ra lỗi thời gian chạy hoặc sẽ ghi đè lên một số bộ nhớ liền kề.
Trong C ++, static_cast <> () sẽ cho phép trình biên dịch kiểm tra xem con trỏ và dữ liệu có cùng kiểu hay không. Nếu không, nó sẽ đưa ra ngoại lệ gán con trỏ không chính xác trong quá trình biên dịch.
char c = 65; //1-byte data. ASCII of ‘A’ int *ptr = static_cast<int>(&c);
Điều này sẽ tạo ra lỗi thời gian biên dịch.