一 赋值操作符
(1)普通赋值=
① 初始化
int a=5;
② 修改
int a=5;
a=10;
③ 连续赋值
int a = 1;
int b = 2;
int c = 3;
a = b = c + 1 //连续赋值
// 等价方式
b = b + 1;
a = b;
// 这样的写法更加'清晰爽朗'而且易于'调试',可读性好
④ 判断
int flag = 10;
if (flag=2) {
printf("%s\n","Hello C!");
}
// 实际效果: if(flag) -->看 "flag"的数值,进行'逻辑'判断
// 没有什么'意义',但是要'明白'含义
(2)复合赋值
a 'operation'= b --> a = a "operation" b
++++++++++++'案例讲解'++++++++++++
a += 5;
a = a+5;
二 单目操作符
+++++++++++++单目: 只有'一个'操作数+++++++++++++
! '逻辑'反操作 --> '结果'是{0,1}
- 负值
+ 正值 -->'不常用'
& 取地址 -->'常用'
sizeof 操作数的类型长度(以'字节'为单位)
~ 对一个数的'补码'二进制'按位'取'反'
-- '前'置、'后'置 --
++ '前'置、'后'置 ++
* 间接访问操作符('解引用'操作符) --> 找到'指针变量'指向的'对象'
① !逻辑反操作
② & * 地址相关
③ sizeof
1)数组
// sizeof 计算变量'所占内存空间'的大小,单位是'字节'
int arr[10] = {0};
printf("%d\n",sizeof(int [10])); // 40
去掉'数组名',剩下的就是'数组类型'
// 字符串、字符、'数组'
2)测试1
3)测试2
sizeof(指针变量) -->只跟'操作系统的位数'有关
32位 -->'4bit'
64位 -->'8bit'
4)测试3
④ 前置[后置]自增自减
核心: 表达式的'结果'
-- 前置["先赋值,后计算"]、后置["先计算,后赋值"]--
++ 前置、后置++
⑤ 关系操作符
⑥ 取反操作符
~"作用": 将对应'数值'的二进制的'反码'进行'取反'
1)测试1
2)测试2
⑦ 逻辑操作符
1. express1 '(&&、||)' express2 -->短路 '真、假'
2. && -->遇到表达式的结果是'0',则'stop'
3. || -->遇到表达式的结果是'1',则'stop'
1)测试1
2)测试2
⑧ 条件操作符
别名:'三目'运算符
exp1 ? exp2 : exp3
if(expr1) {
expr2;
} else {
expr3;
}
⑨ 逗号表达式
1. exp1, exp2, exp3, ...expN
2. 逗号表达式:就是'用逗号隔开'的多个表达式
3. 逗号表达式,从'左向右'依次执行,整个表达式的'结果'是'最后[end]一个表达式'的结果
1)测试1
2)测试2
3)测试3
⑩ 下标引用、函数调用和结构成员
1) [ ]下标引用操作符
2) () 函数调用
3) 结构成员
结构体的'类型'是 --> 'struct Student'
+++++++++++访问一个'结构的成员'+++++++++++
1 . 结构体'.'成员名
2 -> 结构体'指针->'成员名