运算符和表达式
运算符
- 一个操作数的运算符是一元运算符
- 两个操作数的运算符是二元运算符
- 三个操作数的运算符是三元运算符
条件运算符是C语言唯一的一个三元运算符,除此之外都是二元运算符
C运算符
C语言提供一下运算符:
-
算数运算符 (+ - * / % ++ --)
-
关系运算符 (> < == >= <= !=)
-
逻辑运算符 (! && ||)
-
位运算符 (<< >> ~ | ^ &)
-
赋值运算符 (= 及其扩展形式)
-
条件运算符 (?:)
-
逗号运算符 (,)
-
指针运算符 (*和&)
-
求字节数运算符 (sizeof)
-
强制类型转换运算符 ((类型))
-
成员运算符 (.->)
-
下标运算符 ([])
-
其他 (如函数调用运算符())
基本的算数运算符
最常用的算术运算符
运算符 | 含义 | 举例 | 结果 |
---|---|---|---|
+ | 正号运算符(单目运算符) | +a | a的值 |
- | 负号运算符(单目运算符) | -a | a的算数负数 |
* | 乘法运算符 | a * b | a和b的乘积 |
/ | 除法运算符 | a / b | a除以b的商 |
% | 求余运算符 | a % b | a除以b的余数 |
+ | 加法运算符 | a + b | a和b的和 |
- | 减法运算法 | a - b | a和b的差 |
说明:
- 由于键盘无×号,运算符×以*代替
- 由于键盘无÷号,运算符÷以/代替。两个实数相除的结果是双精度实数,两个整数相除的结果为整数。但是,如果除数或被除数中有一个负数,则舍入的方向是不固定的。
- %运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数
- 除%以外的运算符的操作数都可以是任何算术类型
自增(++),自减(–)运算符
自增,自减运算符的作用是使变量的值加1或减1,例如:
++i,–i (在使用i之前,先使i的值加(减)1)
i++,i-- (在使用i之后,使i的值加(减)1)
算术表达式和运算符的优先级与结合性
用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子成为C算术表达式
C语言规定了运算数的优先级,还规定了运算符的结合性
算术运算符——>自左至右
赋值运算——>自右向左
不同类型数据间的混合运算
如果一个运算符两侧的数据类型不同,则先自动进行类型转换,是两者成为同一类型,然后进行运算。
低——————————————————————————————>高
int(char,short)–>unsigned int–>long–>unsigned long–>double(float)–>long double
按照从高到低的顺序给各种数据类型分等级,依次为:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。这里有一个小小的例外,如果 long 和 int 大小相同,则 unsigned int 的等级应位于 long 之上。char 和 short 并没有出现于这个等级列表,是因为它们应该已经被升级成了 int 或者 unsigned int。
当是从低级转换为高级时,是自动转换
从高级转换为低级时,需要进行强制转换
强制转换
类型:
(类型名)(表达式)