常见的运算符分类:
算术运算符:用于处理四则运算
赋值运算符:用于将表达式的值赋值给变量
比较运算符:用于表达式的比较,返回一个真值或者假值
逻辑运算符:用于根据表达式的值返回真值或者假值
算术运算符:
算术运算符按操作数个数可分为一元运算符(含一个操作数)和二元运算符(含两个操作数)。一元运算符的优先级一般高于二元运算符
一元运算符:+(正号)、-(负号)、++(自增1)、–(自减1)
二元运算符:+(加号)、-(减号)、*(乘号)、/(取商)、%(取余)
自增自减量运算符:++(增1)、–(减1)
两种适用形式:
前缀形式:++a 为前缀加形式的增 1 表达式,表示把变量 a 的值加 1 后的值作为该表达式的值,同时变量 a 本身的值加 1;–a 类似,表示把变量 a 的值减 1 后的值作为该表达式的值,同时变量 a 本身的值减 1。
int a =5;
++a
----------------
++a = 6, a = 6
后缀形式:a++为后缀加形式的增 1 表达式,表示先直接把变量 a 原来的值作为该表达式的值,然后变量 a 本身的值加 1; a-- 类似,表示先直接把变量 a 原来的值作为该表达式的值,然后变量 a 本身的值减 1
int a =5;
a++
------------
a++ = 5, a = 6;
增1、减1运算符的副作用:
增1、减1运算符是具有副作用的运算符,即不仅能改变表达式的值,也改变了变量自身的值。使用时要慎重,尤其以下两种情况,要避免使用。
一、当一个变量多次出现在某表达式中时,建议不要将增 1 或减 1 运算符应用于该变量
二、多参函数调用时,如果一个变量出现在多个实参中时,不要对该变量使用增 1 或减 1 运算符。不同编译器可能得到不同结果,出现歧义性。
除法运算符(/):
当运算符 / 的操作数(被除数和除数)均为整数时,结果为取商(取整)。
16/5 == 3
取余运算符(%):
当运算符 % 的操作数(被除数和除数)均为整数时,结果为取余。
16%5 == 1
在程序设计中,经常使用求商和求余运算符分解整数的各位数字。例如,分解十进制整数 123 的个位、十位和百位数字,可以有多种不同的分解方案,下面是其中一种方案。
int a = 123, b,c ,d;
b = a %10; //个位
c = (a /10)/%10 //十位
d = (a/10)/10 //百位
赋值运算符:

比较运算符:
“真”用数字“1”来表示, “假”用数字“0”来表示。

逻辑运算符:

运算符优先级:
不需要专门记忆,也没有必要。哪个优先级高、哪个优先级低我们很难记住。当时用到时查询即可。
当一个表达式中出现多个运算符时,C语言会先比较各个运算符的优先级,按照优先级从高到低的顺序依次执行;当遇到优先级相同的运算符时,再根据结合性决定先执行哪个运算符:如果是左结合性就先执行左边的运算符,如果是右结合性就先执行右边的运算符。



类型转换(自动类型转换和强制类型转换):
自动类型转换(隐式转换):遵循一定的规则由编译系统自动完成。
-
将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换
-
在不同类型的混合运算中,编译器也会自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算。转换的规则如下:
- 转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int 和 long 参与运算时,先把 int 类型的数据转成 long 类型后再进行运算。
- 所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算。
- har 和 short 参与运算时,必须先转换成 int 类型。

强制类型转换:把表达式的运算结果强制转换成所需的数据类型。
- 强制类型转换的格式为:(type_name) expression
注意:
- 无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值。
- 可以自动转换的类型一定能够强制转换,但是,需要强制转换的类型不一定能够自动转换
- 使用强制类型转换时,自己要意识到潜在的风险。

本文介绍了C语言中的运算符,包括算术运算符如加减乘除和自增自减,以及赋值、比较和逻辑运算符。详细讲解了自增自减运算符的前缀和后缀形式,以及除法和取余运算的规则。此外,还讨论了类型转换,包括自动类型转换和强制类型转换的规则及其注意事项。
4977

被折叠的 条评论
为什么被折叠?



