1> 数据运算
1.1> 运算符
1.2> 优先级
( ) "使用括号吧!"
//--------------------------//
➕------------------------------------➕
🔗 C语言 运算符优先级列表
➕------------------------------------➕
2> 类型转换
?为什么需要类型转换?
//--------------------------//
2.1> 自动转换
//--------------------------//
例1: int 自动转换为 unsigned int
//--------------------------//
#include <stdio.h>
int main()
{
int a = -8;
unsigned int b = 4;
if (a+b > 0){
printf("a+b > 0");
} else {
printf("a+b <= 0");
}
return 0;
}
//--------------------------//
运行结果:a+b > 0;
//--------------------------//
解析:
a+b 相等于
(unsigned int)a + b
-8,内存中:1111 1111 1111 1111 1111 1111 1111 1001
/* 补码形式存放 */
按(unsigned int)类型,读取的值为:4,294,967,289
4,294,967,289+4 = 4,294,967,293
二进制:
1111 1111 1111 1111 1111 1111 1111 1101
因此结果为:a+b > 0;
//--------------------------//
//--------------------------//
例2: int 自动转换为 float
//--------------------------//
#include <stdio.h>
int main()
{
int a = 4;
float b = 2.0;
printf("a/b = %f\n", a/b);
return 0;
}
//--------------------------//
运行结果:a/b = 2.000000
//--------------------------//
a 自动转换为float型4.0,再运算;
//--------------------------//
//--------------------------//
例3: double转换为int;
//--------------------------//
#include <stdio.h>
int main()
{
int a = 3.14159;
printf("a = %d", a);
return 0;
}
//--------------------------//
运行结果: a = 3;
//--------------------------//
double 类型的常量3.14159,
自动转为int类型存入a中;
2.2> 强制转换
表达式:(类型名)表达式;
//--------------------------//
(double)8 / 3.0;
将8转换为 double类型;
'( )'是强制转换的一元运算符;
//--------------------------//