#include <stdio.h>
int main(void) {
/*
* 隐式转换:
* 取值范围:char < short < int < long < long long < float < double
* 在不同的数据类型进行计算、赋值等操作,会触发隐式转换
* 转换规则1:
* 取值范围小的,和取值范围大的进行计算,小的会先提升为大的,在进行计算
* 转换规则2:
* char short 类型的数据在运算的时候,都会直接先提升为 int,然后在进行计算
* 字符相加时,字符跟数字进行转换的时候会查询 ASCII 码表
* */
/*
* 强制转换:
* 取值范围:char < short < int < long < long long < float < double
* 当需要将大的值赋值给小的值时,需要强制转换
* 格式:想要转成什么类型,就在前面的小括号中写什么类型即可
* 如:short i = (short)b;
* 强制转换的弊端:
* 有可能导致数据错误
* !!!强制转换需要自己手动书写!!!
* */
short a = 10;
short b = 20;
short d = (short)(a + b); // short 在计算时自动转换为 int 类型
// short d = (short)a + b; // 此时,只有 a 的类型被强制转换,而 b 还是 int 类型
short i = 1;
int j = 2;
long k = 3;
long long o = i + j + k;
// 最后的类型是 long long, 具体的过程是:
// short 先转换为 int, 然后和 int 类型的 j 相运算,结果还是 int
// int 类型的结果和 long 类型的 k 相运算,结果是 long 类型
// long 类型的结果被赋值给 long long 类型的 o ,被“隐式转换”为 long long 类型
return 0;
}