4. 类型转换

4.1 在执行算术运算时,通常要求两个操作数有相同的大小(位数相同),并且存储方式也相同。例如:计算机可以直接将两个16为整数相加,但是不能直接将16位整数和32位整数相加,也不能直接将32位整数和32位浮点数相加。

4.2 如果我们一个表达式中混合使用了不同的数据类型,编译器会自动进行类型转换,这种转换叫做隐式转换。

4.3 程序员也可以进行强制类型转换,这种转换称为显示转换。

4.4 下面情况下,可以进行隐式转换:

当算术表达式或逻辑表达式中操作数类型不相同时

赋值运算中两端类型不相同时

函数调用中实参和形参类型不相同时

return 语句和函数的返回值不相同时

4.5 转换原则,小类型自动转换为大类型,整型转换为浮点型

如果任何一个操作数是浮点数的情况:

untitled7_1.png

如果都不是浮点数的情况:

untitled8_1.png

4.6 强制类型转换语法格式

(类型)表达式 例如:float f; int i = (int)f;

#include <stdio.h>

// 算术运算转换

void test1() {

           char c;

           short int s;

           int i;

           unsigned int u;

           long int l;

           unsigned long int ul;

           float f;

           double d;

           long double ld;

           // c自动转换为int类型

           i = i + c;

           // s 自动转换为int类型

           i = i + s;

           // i 自动转换为unsinged int类型

           u = u + i;

           // u 自动转换为long int类型

           l = l + u;

           // l 自动转换为 unsinged long int

           ul = ul + l;

           // ul 自动转换为float类型

           f = f + ul;

           // f 自动转换为double类型

           d = d + f;

           // d 自动转换为long double

           ld = ld + d;

}

// 赋值转换

void test2(){

           char c;

           int i;

           float f;

           double d;

           // c 自动转换为int

           i = c;

           // i 自动转换为float

           f = i;

           // f 自动转换为double

           d = f;

}

// 强制类型转换

void test3(){

           float f = 3.14;

           int i = (int)f;

           printf("i=%d",i);

}

int main(void) {

           //test1();

           //test2();

           test3();

}

该博客教程视频地址:

原文出处: