一、类型转换
自动类型转换:在程序运行的时候,低精度的数据会自动向高精度的数据进行这类型转换,数据的进度不会丢失
强制类型转换:有时候在我们运算的过程中,需要对数据进行短暂的类型转换,去进行运算,让数据更加精确
- 自动类型转换:
- 一般为 低精度 向 高精度 转换
- (可按字节大小顺序记,有低精度到高精度的数据类型)
- char - short - int - long - float -double .....
- 强制类型转换:
- 常应用于:指针,因为指针的类型不管如何转换,它的精度都是不会丢失的。
- 当用于 高精度 向 低精度 强制转换时, 数据会丢失!
- 如:float a = 3.14; (int) a -> a = 3 , 数据丢失!
- 判断输出类型的方法:
- 若为 同精度 运算,则输出仍为同精度(强制转换除外)。如: int/int -> int
- 若为 不同精度 计算,则输出为更高的进度(强制转换除外)。如: int/float -> float
例:
自动类型转换 与 强制类型转换的 代码 与 输出结果 如图所示:
#include<stdio.h>
void main()
{
//自动类型转换:
printf("100/3 = %d\n", 100/3);
printf("100/3.0 = %f\n", 100/3.0);
//强制类型转换:
printf("(float)100/3 = %f\n", (float)100/3);
printf("(float)(100/3) = %f\n", (float)(100/3));
}
二、运算符优先级
运算符的一般优先级:
由高到低:算术运算符 -> 关系运算符 -> 逻辑运算符 ->赋值运算符
- 算术运算符:一般为 加减乘除、求余、自增、自减
- 移位运算符:左移(<<)、右移(>>)
- 关系运算符:一般为 大于、小于、大于等于、小于等于、等于、不等于
- 逻辑运算符:一般为 与(&&)、或(||)、按位异或(^)、非(!)【!的优先级比算术运算符还高】
- 条件运算符:?:
- 赋值运算符:一般为 赋值(=)、加减乘除后赋值(+=、-=、*=、/=)、取模后赋值(%=)【顺序:从右到左】
- 逗号运算符:优先级最低
注:sizeof 为长度运算符。
附上运算符优先级表:
版权声明:本文为laifengyuan1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。