1.1 常用运算符分类
运算符类型 | 作用 |
---|---|
算术运算符 | 用于处理四则运算 |
赋值运算符 | 用于将表达式的值赋给变量 |
比较运算符 | 用于表达式的比较,并返回一个真值或假值 |
逻辑运算符 | 用于根据表达式的值返回真值或假值 |
位运算符 | 用于处理数据的位运算 |
sizeof运算符 | 用于求字节数长度 |
1.2算术运算符
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10 + 5 | 15 |
- | 减 | 10 - 5 | 5 |
* | 乘 | 10 * 5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取模(取余) | 10 % 3 | 1 |
++ | 前自增 | a=2; b=++a; | a=3; b=3; |
++ | 后自增 | a=2; b=a++; | a=3; b=2; |
-- | 前自减 | a=2; b=--a; | a=1; b=1; |
-- | 后自减 | a=2; b=a--; | a=1; b=2; |
1.3 赋值运算符
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | 赋值 | a=2; b=3; | a=2; b=3; |
+= | 加等于 | a=0; a+=2; | a=2; |
-= | 减等于 | a=5; a-=3; | a=2; |
*= | 乘等于 | a=2; a*=2; | a=4; |
/= | 除等于 | a=4; a/=2; | a=2; |
%= | 模等于 | a=3; a%2; | a=1; |
1.4比较运算符
C 语言的比较运算中, “
真
”用数字“1
”来表示, “假
”用数字“0
”来表示
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | 0 |
!= | 不等于 | 4 != 3 | 1 |
< | 小于 | 4 < 3 | 0 |
> | 大于 | 4 > 3 | 1 |
<= | 小于等于 | 4 <= 3 | 0 |
>= | 大于等于 | 4 >= 1 | 1 |
1.5逻辑运算符
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
! | 非 | !a | 如果a为假,则!a为真; 如果a为真,则!a为假。 |
&& | 与 | a && b | 如果a和b都为真,则结果为真,否则为假。 |
|| | 或 | a || b | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
1.6位运算符
位运算符:我们知道数据都是有0和1来存储的,我们可以通过位运算符改变内存中某单元的某一位的值。
- 主要有位逻辑运算符:&(按位与)、^(按位异或)、|(按位或)、~(按位取反)。
&-->有0为0,全1为1
| --> 有1为1 ,全0位0
^ -->相同为0,不同为1
- 移位运算符:<<(左移)、>>(右移)。
1.7其他运算符
- * 地址运算符:对地址值进行一次寻址运算,并获取里面的内容
- &取地址运算符:获取当前存储的地址值
- [ ]下标运算符,是数组的时候使用的
- . 引用运算符,结构体的时候使用
- ->指向运算符,结构体的时候使用
1.8 运算符优先级
总结:
- 操作数越多的运算符优先级相对低一点:单目—-双目(不包含赋值运算符)---三目—赋值—逗号。
- 双目运算符个数最多,算术运算符---移位运算符---关系运算符---位运算符---逻辑运算符
- 位运算符:~ & ^ |
- 逻辑运算符:! && ||
- 所有的赋值运算符都具有相同的优先级
- 赋值运算符优先级倒数第二,逗号最低,括号最高
- 单目运算符高于双目运算符,双目高于三目
- 双目运算符中算术运算符高于其它双目运算符
- 其它的运算符中有大于小于号的高于没有的,多的高于少的
1.9类型转换
数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题
转换的方法有两种:
-
自动转换(隐式转换):遵循一定的规则,由编译系统自动完成。
-
强制类型转换:把表达式的运算结果强制转换成所需的数据类型。
类型转换的原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低
1.9.1隐式转换
#include <stdio.h>
int main()
{
int num = 5;
printf("s1=%d\n", num / 2);
printf("s2=%lf\n", num / 2.0);
return 0;
}
输出结果:
S1 = 2
S2 = 2.500000
2.0强制转换
强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,其基本语法格式如下所示:
(类型说明符) (表达式)
#include <stdio.h>
int main(){
float x = 0;
int i = 0;
x = 3.6f;
i = x;
i = (int)x;
printf("x=%f, i=%d\n", x, i);
return 0;
}
输出结果:
x=3.600000, i=3
总结:
- 工程师讲的很细致,因为对于嵌入式来说,C语言的基础是最重要的,所以必须打好基础
- 可能是以前大学学过,觉得进度还是听得懂,然后细分下来再补全一下,就可以了
- 明天是九条语句,希望以后的学习能再接再厉。