Chuyển đổi kiểu
Trong khoa học máy tính, chuyển đổi kiểu,[1][2] ép kiểu,[1][3] ép kiểu dữ liệu (tiếng Anh: type coercion),[3] và định dạng kiểu (tiếng Anh: type juggling)[4][5] là những cách khác nhau của việc thay đổi một biểu thức của một kiểu dữ liệu sang một kiểu khác. Ví dụ, chuyển đổi một giá trị số nguyên thành một giá trị số thực dấu phẩy động hoặc đại diện văn bản của nó dưới dạng chuỗi và ngược lại. Chuyển đổi kiểu có thể tận dụng các đặc điểm nhất định của phân cấp kiểu hay trình bày dữ liệu. Hai khía cạnh quan trọng của chuyển đổi kiểu là liệu nó diễn ra ngầm (implicitly) hay tường minh (explicitly),[1][6] và liệu thể hiện dữ liệu bên dưới được chuyển đổi từ dạng này sang sang dạng kia chỉ đơn thuần là biên dịch lại (reinterpreted) như là thể hiện của kiểu dữ liệu kia.
Nhìn chung, cả kiểu dữ liệu cơ bản và phức hợp đều có thể chuyển đổi. Mỗi ngôn ngữ lập trình có các quy tắc riêng để chuyển đổi kiểu. Ngôn ngữ với kiểu mạnh thường ít chuyển đổi ngầm và không khuyến khích biên dịch sự thể hiện, trong khi ngôn ngữ với kiểu yếu thực hiện nhiều chuyển đổi ngầm giữa các kiểu dữ liệu. Ngôn ngữ kiểu yếu thường cho phép ép buộc biên dịch tùy ý giải thích một mục dữ liệu như có các đại diện khác nhau; điều này có thể là một lỗi lập trình không rõ ràng, hoặc một phương pháp kỹ thuật để thực hiện trực tiếp với phần cứng.
Tham khảo
[sửa | sửa mã nguồn]- ^ a b c Mehrotra, Dheeraj (2008). S. Chand's Computer Science. tr. 81–83. ISBN 978-8121929844.
- ^ Programming Languages - Design and Constructs. 2013. tr. 35. ISBN 978-9381159415.
- ^ a b Reilly, Edwin (2004). Concise Encyclopedia of Computer Science. tr. 82, 110. ISBN 0470090952.
- ^ Fenton, Steve (2017). Pro TypeScript: Application-Scale JavaScript Development. tr. xxiii. ISBN 978-1484232491.
- ^ “PHP: Type Juggling - Manual”. php.net. Truy cập 27 Tháng Một năm 2019.
- ^ Olsson, Mikael (2013). C++ Quick Syntax Reference. tr. 87–89. ISBN 978-1430262770.
Liên kết ngoài
[sửa | sửa mã nguồn]- Casting in ABAP
- Casting in Ada
- Casting in C++
- C++ Reference Guide Why I hate C++ Cast Operators, by Danny Kalev
- Casting in Java
- Implicit Conversions in C#
- Implicit Type Casting at Cppreference.com
- Static and Reinterpretation castings in C++ Lưu trữ 2017-08-10 tại Wayback Machine
- Upcasting and Downcasting