各类数值型数据间的混合运算
整型、实型、字符型数据间可以进⾏混合运算,如:
10 - 'a' * 1.5
运算时,参加运算的两个数据如果类型不同, 则⾸先将其类型转换成⼀致再运算,转换规则是: 将优先级低的类型转换到优先级⾼的类型,被称作 自动类型转换(小转大) 。⾃动类型转换的形式为:
大类型类型 变量名 = 小类型变量;
注意: 在混合运算过程中,系统所进⾏的类型转换并不改变原数据的类型,只是在运算过程中将其值变成 同类型后在运算。
C语⾔提供了 强制类型转换(大转小) 运算,可得到⼀个所需类型的数据,强制类型转换的形式为:
(类名名)(表达式)
----------------------------------------
小类型类型 变量名 = (小类型类型)大类型变量;
(double) a 将a的值转换成double类型
(int)(x+y) 将x+y的结果转换为int类型
(int)x+y 将x的值转换成int类型后与y进⾏相加
(float)(5%3) 将5%3的值转换成float类型
特别需要说明的是:在强制类型转换的过程中,并不改变原变量的类型,只是在运算过程中将其值转换类 型后再运算。
C语⾔运算符和C算术表达式
C运算符
C表达式
所谓表达式就是将操作对象用运算符连接起来的符合C语法规则的式子。(运算数 + 运算符 = 表达式)
C语言规定了运算符的优先级和结核性。在表达式求值时,按运算符的优先级别的高低次序执行。如果运算对象 两侧的运算符优先级别相同,如a+b+c,则按照规定的“结合方向”处理。
C语言运算符优先级
运算符类型
算术运算符
基本的算术运算符
+、- :正负值运算符(单目运算符)。
+、-、*、/、% :加减乘除取余运算符(双目运算符)
注意:进行除法运算的时候,除数是不能为0的。 这些算术运算符的运算顺序与数学上的运算顺序相同。
表达式和运算符的优先级与结核性
算术表达式:是指用算术运算符和括号将运算对象连接起来,符合C语言语法规则的式子。例如:
a * b / c - 1.5 + 'a'
表达式中各种运算符的运算顺序,必要时应添加括号,例如:
(a+b)/(c+d) != a+b/c+d
注意表达式中个运算对象的数据类型,特别是整型相除,C语⾔规定,两个整型相除,其结果仍为整型。例如:
7/6的值为1
4/7的值为0
(1/2)+(1/2)的值为0,而不是1
优先级与结核性:在表达式求解的时候,先按运算符的优先级级别高低次序执行。若一个运算对象两侧的运算 符的优先级相同,则按规定的结合方向处理。
各种运算符的结合方向:
① 算术运算符的结合方向:“自左向右”,即运算对象先与左边的运算符结合,例如:
a - b + c // 先执行a - b,然后在执行 + c 运算
② 有些运算符的结合方向:“自右向左”,即运算对象先与右边的运算符结合,例如:
i++
③ 若一个运算符两侧的数据类型不同,会自动转换成同类型后进行计算。
自增++、自减--运算符
作用:使变量的值增1或者减1
结合方向:“自右向左”
++i,--i
表示在使用该运算符对象之前,先让自身增1或减1,然后再使用它,也就是使用增1或者减1后的值。先计算, 后赋值
例如:语句x = ++n;相当于以下两个语句的运算结果:n= n + 1;x=n
int n = 1; // n:1
int x = ++n; // x:2 等价于:n = n + 1; x = n
i++,i--
表示在使用该运算符对象之后,才让自身增1或减1,也就是先使用它的值,在让自身增1或者减1。先赋值,后计算
例如:语句x = n++;相当于以下两个语句的运算结果:x = n;n = n + 1
int n = 1; // n:1
int x = n++; // x:1 等价于:x = n; n = n + 1
总结:不管是++i还是i++,i自身都增1;同理不管是--i还是i--,i自身都减1,它们的不同之处在于赋值的先后顺序。
注意: ① 增1与减1运算符只适⽤于整型变量或字符型变量,⽽不能⽤于其他类型的变量 ② 增1与减1运算符不能⽤于常量或表达式,例如: --5 , (i+j)++ 等都是⾮法的。
更多即在主页更新,请持续关注……
标签:优先级,运算,++,C语言,运算符,算数,类型,表达式 From: https://blog.csdn.net/m0_58371281/article/details/144108613