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;

相关推荐
找了一圈尾巴1 小时前
Python 学习-深入理解 Python 进程、线程与协程(下)
开发语言·python·学习
遇到困难睡大觉哈哈1 小时前
Harmony os ——ArkTS 语言笔记(五):泛型、空安全与可选链
前端·笔记·安全·harmonyos·鸿蒙
ljt27249606611 小时前
Compose笔记(五十七)--snapshotFlow
android·笔记·android jetpack
活跃的煤矿打工人1 小时前
【星海随笔】标准学习
学习
Ziegler Han2 小时前
《升维》阅读笔记:在不确定的世界里,如何做出高确定性的决策
笔记·《升维》
工程师平哥2 小时前
APE-01 新建工程
笔记·嵌入式硬件
今天你TLE了吗2 小时前
通过RocketMQ延时消息实现优惠券等业务MySQL当中定时自动过期
java·spring boot·后端·学习·rocketmq
泓博3 小时前
Android摇一摇
笔记
烤麻辣烫3 小时前
黑马程序员苍穹外卖(新手)DAY12
java·开发语言·学习·spring·intellij-idea