12.运算符和表达式
运算符与运算对象进行运算操作必然产生一个结果,因此每个表达式都有一个结果
1)加法运算符+
2)减法运算符-
3)符号运算符:
+ 用于标明一个表达式的正负 - 用于改变一个表达式的正负。 与加减运算符不同的是,它仅需要在运算符右边有一个运算对象
表达式结果:
+ 号表达式的结果为右边运算对象的值。 - 号表达式的结果为右边运算对象值的相反数。
4)乘法运算符*
5)除法运算符/
-整型无法整除问题:a=5;b=2
在C语言里面,整型与整型运算的结果,依然是一个整型。结果的小数部分被丢弃,这一过程被称作截 断。a / b后,结果仍然是一个整型,数值已经被截断了,这时候,我们再赋给一个浮点型的c。也只能 是整数2转成浮点2.0了,没有起到效果。 那我们将a,b,c都改为float,这样就不会出现截断了。a,b将会进行浮点运算,结果也是一个浮点数 类型float。
7)求余运算符%
8)赋值运算符=
9)自增、自减运算符
-前缀模式
-后缀模式
-自增、自减表达式何时操作运算对象
为了避免写出这种在不同编译器下可能造成不同结果的代码。请不要在一个表达式中,重复对一个变量 进行自增或自减。
10)一元运算符、二元运算符
11)运算符优先级
13.类型转换
1) 判断数据类型的小技巧
这里的 int 后面加了一个 * ,说明它是一个整型指针变 量。我们先不管什么是指针变量,大家只要知道,指针变量和整型、浮点这些数据类型是不能相互赋值的
错误提示与我们定义的变量类型一致,说明这个提示是准确的。
2)同类型之间进行运算
-
-无符号整型类型同类型运算中: 比int低级的类型,都会转换成int,比int高级的类型不变。
-浮点同类型
级别float 浮点类型同类型运算中 类型不变 -总结 对于整型,级别低于int的类型会转换成int。 而比int高级的类型则不发生变化。 对于浮点,不发生变化。 3)不同类型之间进行运算 -类型级别: char < short < int < long 有符号整型不同类型运算中: 若运算符两边类型均低于int或等于int,那么结果为int。 若有高于int的,那么结果为高于int的等级最高的类型。 无符号整型不同类型与之相似 -混合型整型 类型级别: char 混合整型类型运算中:(同上) 若运算符两边类型均低于int或等于int,那么结果为int。 若有高于int的,那么结果为高于int的等级最高的类型 -浮点不同类型 浮点不同类型运算中: 结果为运算符两边级别最高的类型 -浮点整形混合 类型级别:整型 浮点与整型类型混合运算中: 结果为运算符两边等级最高的类型 4. 自动类型转换 C语言会将运算符两边的类型,先经过自动类型转换后,再进行运算。 char 遵循规律 5.整型运算的注意点 整型与整型运算,是不会出现浮点类型的。也就是说,运算结果将丢失小数部分。 对于字面常量也有同样的问题 除号运算符两边均为 int , int 与 int 运算,结果是 int 。那我们必须在运算符两边,设置一个浮点型 才行, float 和 double 都可以。根据上面的转换规则,运算符两边均会转换为浮点型进行运算,结果也 是一个浮点型。这样就能保留小数部分了 6.强制类型转换 请注意,强制类型转换,并不能影响n1和n2变量原本的类型。它们只是改变了运算时的临时数据对象的类型。 7.赋值造成的类型转换 小的可以赋值给大的,大的请勿赋值给小的(除非有特殊要求) 听课重点 -探讨各类型运算结果 -自动类型转换 -强制类型转换



