C语言学习笔记

一、运算符

1.1 简介

运算符分类:算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、sizeof运算符

目:表示运算符所连接的操作个数(三目:exp1?exp2:exp3 )

自动转换:又称为隐式转换,运算数据的数据类型会随着操作数的数据类型自定发生该变,一般发生在双目运算符之间,当双目运算符运算的数据类型不一致时,就会发生自动转换

遵循原则:低精度→高精度,小量程→大量程

强制转换: 格式:(待转换数据类型)变量 示例:int a = 10; (float)a = 10.0;

|---------|--------------------|-----------|------------------|----------|--------|
| 优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
| 1 | [ ] | 数组下标 | 数组名[常量表达式] | 左到右 | -- |
| 1 | () | 圆括号 | (表达式)/函数名(形参表) | 左到右 | -- |
| 1 | . | 成员选择(对象) | 对象.成员名 | 左到右 | -- |
| 1 | -> | 成员选择(指针) | 对象指针->成员名 | 左到右 | -- |
| 2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 |
| 2 | ~ | 按位取反运算符 | ~表达式 | 右到左 | 单目运算符 |
| 2 | ++ | 自增运算符 | ++变量名/变量名++ | 右到左 | 单目运算符 |
| 2 | -- | 自减运算符 | --变量名/变量名-- | 右到左 | 单目运算符 |
| 2 | * | 取值运算符 | *指针变量 | 右到左 | 单目运算符 |
| 2 | & | 取地址运算符 | &变量名 | 右到左 | 单目运算符 |
| 2 | ! | 逻辑非运算符 | !表达式 | 右到左 | 单目运算符 |
| 2 | ( 类型 ) | 强制类型转换 | (数据类型)表达式 | 右到左 | -- |
| 2 | sizeof | 长度运算符 | sizeof(表达式) | 右到左 | -- |
| 3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
| 3 | * | 乘 | 表达式*表达式 | 左到右 | 双目运算符 |
| 3 | % | 余数(取模) | 整型表达式%整型表达式 | 左到右 | 双目运算符 |
| 4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
| 4 | - | 减 | 表达式-表达式 | 左到右 | 双目运算符 |
| 5 | << | 左移 | 变量<<表达式 | 左到右 | 双目运算符 |
| 5 | >> | 右移 | 变量>>表达式 | 左到右 | 双目运算符 |
| 6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
| 6 | >= | 大于等于 | 表达式>=表达式 | 左到右 | 双目运算符 |
| 6 | < | 小于 | 表达式<表达式 | 左到右 | 双目运算符 |
| 6 | <= | 小于等于 | 表达式<=表达式 | 左到右 | 双目运算符 |
| 7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
| 7 | != | 不等于 | 表达式!= 表达式 | 左到右 | 双目运算符 |
| 8 | & | 按位与 | 表达式&表达式 | 左到右 | 双目运算符 |
| 9 | ^ | 按位异或 | 表达式^表达式 | 左到右 | 双目运算符 |
| 10 | | | 按位或 | 表达式|表达式 | 左到右 | 双目运算符 |
| 11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
| 12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
| 13 | ?: | 条件运算符 | 表达式1? 表达式2: 表达式3 | 右到左 | 三目运算符 |
| 14 | = | 赋值运算符 | 变量=表达式 | 右到左 | -- |
| 14 | /= | 除后赋值 | 变量/=表达式 | 右到左 | -- |
| 14 | *= | 乘后赋值 | 变量*=表达式 | 右到左 | -- |
| 14 | %= | 取模后赋值 | 变量%=表达式 | 右到左 | -- |
| 14 | += | 加后赋值 | 变量+=表达式 | 右到左 | -- |
| 14 | -= | 减后赋值 | 变量-=表达式 | 右到左 | -- |
| 14 | <<= | 左移后赋值 | 变量<<=表达式 | 右到左 | -- |
| 14 | >>= | 右移后赋值 | 变量>>=表达式 | 右到左 | -- |
| 14 | &= | 按位与后赋值 | 变量&=表达式 | 右到左 | -- |
| 14 | ^= | 按位异或后赋值 | 变量^=表达式 | 右到左 | -- |
| 14 | |= | 按位或后赋值 | 变量|=表达式 | 右到左 | -- |
| 15 | | 逗号运算符 | 表达式,表达式,... | 左到右 | -- |

1.2 注意事项

取余运算中,两个操作数必须为整数

a++:后自增,先进行其他处理,在进行自增操作

++a:前自增,先进行自增操作,在进行其他处理

a--:后自减,先进行其他处理,在进行自减操作

--a:前自减,先进行自减操作,在进行其他处理

C语言比较运算符中,真用数字1表示,假用数字0表示;

逻辑运算符中表达式的结果判断,一般默认非0即真

逻辑与&&:如果表达式1为假,则不会执行表达式2

逻辑或||:如果表达式1为真,则不会执行表达式2

1.3 位运算

所有的位运算操作,都是操作二进制数据的补码

左移:实际是将原来数据乘2^n
右移:是将数据除以2^n(偶数右移:正负数移动后,绝对值一致。奇数右移:正数,把小数位舍去,负数,小数位进一)

二、结构化编程

2.1 if-else与switch-case的根本区别

if-else:遍历分支条件,直到条件为真,如果没有分支条件为真,则执行else语句中的代码,或直接结束
switch-case:跳转分支语句,当前语句会生成一个跳转表,用来指示实际的case分支地址,而且switch-case的执行效率要高于if-else

2.2 do-while与while的区别

while循环是先判断在执行,存在"循环体一次都不执行"的情况

do-while先执行在判断,存在"循环体至少执行一次"的情况

2.3 控制语句

break语句

作用:结束包含本次break的最近一次循环或者switch-case结构;
特点:只能跳出当前一层循环

continue语句

作用:只能用于循环结构,当执行到continue时,视为本次循环结束(该循环执行多次),之后执行后续循环
特点:结束本次循环,继续下次循环

return语句:
作用:1.结束当前函数 2.返回一个值给调用该函数的函数

goto语句:

作用:当程序执行到goto标签时;程序会跳转到标签所指定的位置开始执行

三、四种变量数据交换

3.1 中间变量辅助

temp=a;

a=b;

b=temp;

3.2 和差法

a=a+b;

b=a-b;

a=a-b;

3.3 乘除法

a=a*b;

b=a/b;

a=a/b;

3.4 异或法

a=a^b;

b=a^b;

a=a^b;

相关推荐
悠哉悠哉愿意8 分钟前
【EDA学习笔记】电子技术基础知识:元件数据手册
笔记·单片机·嵌入式硬件·学习·eda
德福危险15 分钟前
C语言数据类型与变量 系统总结笔记
c语言·笔记·算法
匠心网络科技20 分钟前
JavaScript进阶-深入解析ES6的Set与Map
前端·javascript·学习·ecmascript·es6
Gsen281929 分钟前
AI大模型从0到1记录学习 大模型技术之机器学习 day60-day69
人工智能·学习·机器学习
Arciab32 分钟前
51单片机学习板PCB制作
嵌入式硬件·学习·51单片机
小智RE0-走在路上33 分钟前
Python学习笔记(10) -- 异常,模块,包
笔记·python·学习
im_AMBER42 分钟前
Leetcode 83 使数组平衡的最少移除数目中等相关标签 | 尽可能使字符串相等
数据结构·c++·笔记·学习·算法·leetcode
XFF不秃头42 分钟前
力扣刷题笔记-组合总和
c++·笔记·leetcode
xian_wwq44 分钟前
【学习笔记】安全模型
笔记·学习
理人综艺好会1 小时前
Redis学习之单线程
redis·websocket·学习