C语言学习笔记——类型转换与运算符的优先级

一、类型转换

自动类型转换:在程序运行的时候,低精度的数据会自动向高精度的数据进行这类型转换,数据的进度不会丢失

强制类型转换:有时候在我们运算的过程中,需要对数据进行短暂的类型转换,去进行运算,让数据更加精确

  • 自动类型转换:
  • 一般为 低精度 向 高精度 转换
  • (可按字节大小顺序记,有低精度到高精度的数据类型)
  • char - short - int - long - float -double .....
  •  
  • 强制类型转换:
  • 常应用于:指针,因为指针的类型不管如何转换,它的精度都是不会丢失的。
  • 当用于 高精度 向 低精度 强制转换时, 数据会丢失!
  • 如:float a = 3.14;     (int) a ->  a = 3 , 数据丢失!   
  •  
  • 判断输出类型的方法:
  • 若为 同精度 运算,则输出仍为同精度(强制转换除外)。如: int/int -> int 
  • 若为 不同精度 计算,则输出为更高的进度(强制转换除外)。如: int/float -> float

例:

自动类型转换 与 强制类型转换的 代码 与 输出结果 如图所示:

#include

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));
}

C语言学习笔记——类型转换与运算符的优先级_第1张图片

二、运算符优先级

运算符的一般优先级:

由高到低:算术运算符 -> 关系运算符 -> 逻辑运算符 ->赋值运算符

  1. 算术运算符:一般为 加减乘除、求余、自增、自减
  2. 移位运算符:左移(<<)、右移(>>)
  3. 关系运算符:一般为 大于、小于、大于等于、小于等于、等于、不等于
  4. 逻辑运算符:一般为 与(&&)、或(||)、按位异或(^)、非(!)【!的优先级比算术运算符还高】
  5. 条件运算符:?:
  6. 赋值运算符:一般为 赋值(=)、加减乘除后赋值(+=、-=、*=、/=)、取模后赋值(%=)【顺序:从右到左】
  7. 逗号运算符:优先级最低

注:sizeof 为长度运算符。

附上运算符优先级表:

C语言学习笔记——类型转换与运算符的优先级_第2张图片

 

你可能感兴趣的:(C,C语言学习笔记)