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;

相关推荐
如果你想拥有什么先让自己配得上拥有28 分钟前
近似数的思考学习
学习
崎岖Qiu1 小时前
【OS笔记35】:文件系统的使用、实现与管理
笔记·操作系统·存储管理·文件系统·os
ha20428941941 小时前
Linux操作系统学习记录之----自定义协议(网络计算器)
linux·网络·学习
振华说技能1 小时前
SolidWorks学习大纲-从基础到全面精通,请看详情
学习
曦月逸霜1 小时前
离散数学-学习笔记(持续更新中~)
笔记·学习·离散数学
hunter14502 小时前
windows server AD域与CA部署证书
笔记
im_AMBER2 小时前
Leetcode 101 对链表进行插入排序
数据结构·笔记·学习·算法·leetcode·排序算法
Mr -老鬼2 小时前
Rust与Go:从学习到实战的全方位对比
学习·golang·rust
laplace01232 小时前
# 第四章|智能体经典范式构建 —— 学习笔记(详细版)
笔记·学习
程序猿零零漆2 小时前
Spring之旅 - 记录学习 Spring 框架的过程和经验(十四)SpringMVC的请求处理
学习·spring·pandas