C语言中的运算符与表达式
1.基本概念
运算符:就是表示某种运算功能的符号。按操作功能运算符大致可分为:算术运算符、关系运算符、逻辑运算符、按位运算符以及其它运算符如赋值运算符、条件运算符、逗号运算符等。
运算符按种类可分为单目运算符、双目运算符、三目运算符。
表达式:是由操作数和运算符组成的序列,它和算术中四则混合运算类似,其中操作数可以是常量也可是变量。
优先级:各类运算符在一个表达式中运算的先后顺序。
结合性:当一个运算量两侧的运算符优先级相同时运算的结合方向。
2.几大种类
1.算术运算符
运算符 | 含义 | 举例 | 结果 |
---|---|---|---|
* | 乘法运算符 | a*b | a和b的乘积 |
/ | 除法运算符 | a/b | a除以b的商 |
% | 求余运算符 | a%b | a除以b的余数 |
+ | 加法运算符 | a+b | a和b的和 |
- | 减法运算符 | a-b | a和b的差 |
%运算符要求参加运算的运算对象为整数,结果也是整数。两个实数相除的结果是双精度实数,两个整数相除的结果为整数。
类型装换
类型不同的数进行运算,其结果按类型优先级高的类型定。
char,short→int→unsigned→long→double←float
优先级
()→*,/,%→+,-
结合性
从左到右
2.关系运算符
关系 | 表示 |
---|---|
小于 | < |
小于等于 | <= |
大于 | > |
大于等于 | >= |
等于 | == |
不等于 | != |
当比较结果成立时,结果为1,当比较结果不成立时,结果为0。参与运算的两个运算量可以是任意类型的数据。
3.逻辑运算符
运算符 | 含义 |
---|---|
! | 逻辑“非” |
&& | 逻辑“与” |
|| | 逻辑“或” |
逻辑运算中,非零当做真,0作为假,因此任何类型的数据都可以参与到逻辑运算。c语言中, 逻辑运算结果用数值1表示真,数值0表示假。
4.赋值运算符
赋值运算符:“=”
赋值表达式是由賦值运算符连接左边一个变量和右边一个表达式构成。
[变量]=[表达式];
格式左边一定是一个变量,格式右边可以是任意的表达式。表达式计算结果的数据应当与变量的数据类型相同。
如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。
5.逗号运算符
逗号运算符:,
作用:将几个表达式隔开并以此计算。
- 优先级:最低
- 结合性:自左至右
- 整个表达式的值:最后一个表达式的值
6.逗号运算符
条件运算符:?:
作用:判断一个逻辑表达式的结果,如果为真则指定执行某个表达式,如果为假则指定执行另外的表达式。条件表达式的实质就是起程序控制作用。
表达式1?表达式2:表达式3
优先级:逻辑>条件>赋值
结合性:自右至左
求值规则:先求解表达式1的值,若为真(非0),求解表达式2,并把表达式2的值作为整个条件表达式的值:若表达式1的值为假(0),求解表达式3,并把表达式3的值作为整个条件表达式的值。
举例:
#include "stdio.h"
int main()
{
int y,x = 15;
y=x>10 ? x/10:x>0 ? x: -x;
printf("y=%d",y);
}
输出y=1
7.sizeof运算符
sizeof()运算符是一个单目运算符,用于计算一个某种类型的运算量所占用的字节数。