Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểu ép kiểu trong C / C ++ là gì?

Ép kiểu là một cách để chuyển đổi một biến từ kiểu dữ liệu này sang kiểu dữ liệu khác. Ví dụ:nếu bạn muốn lưu trữ một giá trị 'dài' thành một số nguyên đơn giản thì bạn có thể nhập ép kiểu 'long' thành 'int'. Bạn có thể chuyển đổi các giá trị từ loại này sang loại khác một cách rõ ràng bằng cách sử dụng toán tử truyền như sau -

(type_name) expression

Hãy xem xét ví dụ sau trong đó toán tử ép kiểu khiến phép chia một biến số nguyên cho một biến số nguyên khác được thực hiện như một phép toán dấu phẩy động -

Ví dụ

#include <stdio.h>
main() {
   int sum = 17, count = 5;
   double mean;
   mean = (double) sum / count;
   printf("Value of mean : %f\n", mean );
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau -

Value of mean : 3.400000

Cần lưu ý ở đây rằng toán tử ép kiểu có quyền ưu tiên hơn phép chia, vì vậy giá trị của tổng trước tiên được chuyển đổi thành kiểu double và cuối cùng nó được chia cho số đếm tạo ra double giá trị.

Các chuyển đổi kiểu có thể là ẩn được trình biên dịch thực hiện tự động hoặc có thể được chỉ định rõ ràng thông qua việc sử dụng toán tử ép kiểu. Việc sử dụng toán tử ép kiểu được coi là phương pháp lập trình tốt bất cứ khi nào cần chuyển đổi kiểu.

Quảng cáo số nguyên

Quảng cáo số nguyên là quá trình mà các giá trị của kiểu số nguyên "nhỏ hơn" int hoặc int không dấu được chuyển đổi thành int hoặc int không dấu . Hãy xem xét một ví dụ về việc thêm một ký tự với một số nguyên -

Ví dụ

#include <stdio.h>
main() {
   int i = 17;
   char c = 'c'; /* ascii value is 99 */
   int sum;
   sum = i + c;
   printf("Value of sum : %d\n", sum );
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau -

Value of sum : 116

Ở đây, giá trị của sum là 116 vì trình biên dịch đang thực hiện việc thăng hạng số nguyên và chuyển đổi giá trị của 'c' thành ASCII trước khi thực hiện thao tác cộng thực tế.

Chuyển đổi số học thông thường

Chuyển đổi số học thông thường được thực hiện ngầm định để chuyển các giá trị của chúng thành một kiểu chung. Trình biên dịch đầu tiên thực hiện thăng hạng số nguyên; nếu các toán hạng vẫn có các kiểu khác nhau, thì chúng được chuyển đổi thành kiểu xuất hiện cao nhất trong phân cấp sau -

Kiểu ép kiểu trong C / C ++ là gì?

Các chuyển đổi số học thông thường không được thực hiện cho các toán tử gán, cũng không phải cho các toán tử logic &&và ||. Chúng ta hãy lấy ví dụ sau để hiểu khái niệm -

Ví dụ

#include <stdio.h>
main() {
   int i = 17;
   char c = 'c'; /* ascii value is 99 */
   float sum;
   sum = i + c;
   printf("Value of sum : %f\n", sum );
}

Đầu ra

Value of sum : 116.000000

Ở đây, có thể hiểu đơn giản rằng c đầu tiên được chuyển đổi thành số nguyên, nhưng vì giá trị cuối cùng là gấp đôi, chuyển đổi số học thông thường sẽ áp dụng và trình biên dịch chuyển đổi i và c thành 'float' và thêm chúng vào để tạo ra kết quả 'float'.