Monday, April 27, 2015

1. Type Casting
Ép kiểu là hành động chuyển đổi kiểu dữ liệu của biến sang một kiểu dữ liệu khác cho phù hợp với một phép toán hay trường hợp nào đó.

Cast operator:

 (type_name) expression  

Ex:
type-casting.c
 #include <stdio.h>  
 int main()  
 {  
   int sum;  
   int count;  
   float avg;  
   sum = 125;  
   count = 50; 
 
   avg = sum / count;  
   printf("<LINE%d> sum: %d, count: %d, avg: %f \n", __LINE__, sum, count, avg);  
   
   avg = (float)sum / count;  
   printf("<LINE%d> sum: %d, count: %d, avg: %f \n", __LINE__, sum, count, avg);  

   return 0;  
 }  

Compile & Execute:
 $ gcc type-casting.c   
 $ ./a.out   
 <LINE17> sum: 125, count: 50, avg: 2.000000   
 <LINE21> sum: 125, count: 50, avg: 2.500000   

Rõ ràng trong những trường hợp như thế này thì cần phải có type casting thì mời nhận được kết quả đúng.

2. Phân cấp ép kiểu
3. Type Casting Pointer
Ép kiểu với pointer cũng tương tự như với các kiểu thông thường.

Ex:
type-casting-pointer.c
 #include <stdio.h>  
 enum {  
   TYPE_CHAR,  
   TYPE_INT,  
   TYPE_FLOAT  
 };  
 void print_info(int type, void *data){  
   switch (type) {  
   case TYPE_CHAR:  
     printf("data char: %s \n", (char*)data);  
     break;  
   case TYPE_INT:  
     printf("data int: %d \n", *((int*)data));  
     break;  
   case TYPE_FLOAT:  
     printf("data float: %f \n", *((float*)data));  
     break;  
   default:  
     break;  
   }  
 }  
 int main()  
 {  
   char name[32] = "chicken";  
   int age = 5;  
   float weight = 2.5f;  
   print_info(TYPE_CHAR, (void*)name);  
   print_info(TYPE_INT, (void*)&age);  
   print_info(TYPE_FLOAT, (void*)&weight);  
   return 0;  
 }  

Compile & Execute:
 $ gcc type-casting-pointer.c   
 $ ./a.out   
 data char: chicken   
 data int: 5   
 data float: 2.500000   


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -