运算符和表达式
运算符:运算符用于执行程序代码运算,会针对一个以上操作数来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”
操作数:是运算符作用于的实体,操作数指出指令执行的操作所需要数据的来源。
表达式:是由数字、运算符、数字分组符号(括号)、自由变量等以能求得数值的有意义排列方法所得的组合。
表达式书写规则
1,运算符不能相邻。例a+-b是错误的
2,乘号不能省略。列x乘以y,应写成x*y,而不是xy
3,可用多层括号表示运算次序,括号必须成对出现,均使用小括号。
运算符优先级和结合性
所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁。这个其实我们在小学学算术的时候就学过,如1+4÷2
那么“结合性”是什么呢?优先级都是关于优先级不同的运算符参与运算时先计算谁后计算谁。但是如果运算符的优先级相同,那么先计算谁后计算谁呢?这个就是由“结合性”决定的。
比如1+2×3÷4,乘和除的优先级相同,但是计算的时候是从左往右,即先计算乘再计算除,所以乘和除的结合性就是从左往右。就是这么简单!
运算符分类
按所需操作数分类:
- 单目运算符
- 双目运算符
- 三目运算符
按作用分类:
算术运算符
单目正负不会改变操作数的值。 int num = 10;
-num;//表达式的值为-10 num还是为10
整数相除会向下取整。 5/2 == 2
5/2.0 == 2.5
取模运算只针对整数。 5%2 == 1
5.2%2//语法错误
赋值运算符
将一个数据(常量或表达式)赋值给一个变量。 int age =18;
age +=2;//age = age +2;
age +=5-3;//age = age+(5-3);
关系运算符
- 关系表达式的值只有2种,为真(true)返回1,为假(false)返回0。
- 所谓关系运算,就是做比较,日常生活中经常遇到一些真假判断,比如说,“张三比李四高”、“济南到北京比济南到上海近”,“5大于2”这些问题的答案是真或假。程序设计是对实际问题解决过程的模拟,常常需要做判断,像“如果这样,我就执行动作A,如果那样,我就执行动作B”,那怎么判断这样那样呢,就需要关系运算符和关系表达式。
逻辑运算符
- 逻辑表达式的值只有2种,为真(true)返回1,为假(false)返回0。
- 一般用来连接关系表达式。
短路现象
在由&&和||运算符组成的逻辑表达式中,C语言有个“节省计算”原则,当计算出一个子表达式的值后便可确定整个逻辑表达式的值时,后面的子表达式就不需要再计算了,这种表达式也称为短路表达式。