数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。

转换的方法有两种:

  • 自动转换(隐式转换):遵循一定的规则,由编译系统自动完成。
  • 强制类型转换(显示转换):把变量或表达式的运算结果强制转换成所需的数据类型。


    类型转换的原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

image.png

隐式转换

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int num = 5;
  5. printf("s1=%d\n", num / 2); // s1=2
  6. printf("s2=%lf\n", num / 2.0); // s2=2.500000
  7. return 0;
  8. }

强制转换

强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,其基本语法格式如下所示:
(类型说明符) (表达式)

  1. #include <stdio.h>
  2. int main()
  3. {
  4. float x = 0;
  5. int i = 0;
  6. x = 3.6f;
  7. i = x; //x为实型, i为整型,直接赋值会有警告
  8. i = (int)x; //使用强制类型转换
  9. printf("x=%f, i=%d\n", x, i);
  10. return 0;
  11. }