C语言:20250711笔记
内容提要
运算符
位运算
流程控制
算法
流程的三种结构
C语句
数据的输入与输出
运算符
位运算
<< :左移,按位左移
说明:原操作数所有的二进制位数向左整体移动指定位。(小端模式下:高舍低补)
无符号左移
语法:
操作数 << 移动位数
举例:
unsigned int a = 3 << 3; //24 将3左移3位,可以套用公式: 3 * 2^3unsigned int b = 5 << 4; //80
有符号左移
语法:
操作数 << 移动位数
举例:
int a = -3 << 3 // -24 将3左移3位,可以套用公式: -3 * 2^3
注意:
如果符号位被覆盖或者移出高位全为1时溢出或者极端溢出时,公式不适用,其他使用都可以使用公式:
a * 2 ^ n
>>:右移,按位右移
说明:原操作数所有二进制位数据整体向右移动指定位,移除的数据舍弃(高补低舍)
如果操作数是无符号数:左边用0补齐
如果操作数是有符号数:左边用什么补全,取决于计算机系统
逻辑右移:数据位全部用0补全
算数右移:由符号位决定补什么,符号位是1,就用1来补全,如果符号位是0,就用0来补全
无符号右移
语法:
操作数 >> 移动位数
举例:
unsigned char a = 3 >> 3;
演示:
右符号右移
语法:
操作数 >> 移动位数
举例:
char a = -3 >> 3; // -1
演示:
关于移位运算过程:
原数据 → 二进制原码 → 二进制反码 → 二进制补码 → 移位运算 → 二进制反码 → 二进制原码 → 特定进制数据
流程控制
算法(了解)
著名计算机科学家沃斯提出了一个公式:
程序 = 数据结构 + 算法
数据结构:对数据的描述
算法:对操作步骤的描述
算法的定义
广义的来说,为解决一个问题而采取的方法和有限的步骤,就称为“算法”
例如:
将大象放入冰箱的算法就可以如下描述:
打开冰箱门 → 把大象装进去 → 关闭冰箱门
算法特征
有穷性:包含有限的操作步骤,不能无限制的执行下去。
可行性:算法中每一天指令必须是切实可执行的。
确定性:算法中每一条指令必须有确切的含义,不能产生歧义。
算法描述-流程图
案例:
要求:对于计算 s=1+2+3+4+5+6+7+8+9+10(累加求和)
用流程图表示:
程序的三种基本结构(重点)
程序的三种基本结构包括顺序结构、分支结构(条件结构、选择结构)、循环结构(重复结构)
顺序结构
特点:特点:各操作是按先后顺序执行的,是最简单的一种结构,这个结构是程序默认的。
其中A和B两个框是顺序执行的。也就是在A框所指定的操作后,必然接着执行B框所指定的操作。
分支结构
特点:根据是否满足给定的条件而从一组、两组、或者多组操作中选择一种进行执行。
如果P条件成立,就执行A操作,否则跳过这个结构。
无论会不会执行A操作,分支都会结束
无论P条件是否成立,A操作或者B操作中总有一个会执行。
无论执行完哪一个分支,分支都会结束
分支结构又分为:
①单分支
②双分支
③多分支
循环结构
特点:在满足一定条件下,反复执行某一部分操作,有两种类型:
当型循环
执行过程:
当给定条件P成立时,执行S操作,然后再判断P条件是否成立,如果仍然成立,再执行S操作,然后再判断...,如此反复,直到某一次P条件不成立为止,此时不再执行S,结束循环。
特点:
先判断,后执行,循环体(S)有可能一次都不执行。
代表:
while、for
直到型循环
执行过程:
执行S操作,然后判断条件P是否成立,如果成立,再执行S操作,然后再判断,…...,如此反复,直到某一次P条件不成立不再执行S,结束循环。
特点:
先执行,后判断,循环体(S)最少执行一次。
代表:
do..while
C语句
定义
C程序是以函数为基础单位的。
一个函数的执行部分是由若干条语句构成的。
C语句都是用来完成一定的操作任务。
C语句必须依赖于函数存在。
C程序结构
C语句分类
1. 控制语句
作用:用来完成一定的控制功能
举例:
if..else..、for..、while..、do..while、continue、break、switch、return、goto
2. 函数调用语句
由一个函数调用+分号组成,例如:
printf("这是一个函数调用语句");test();
3. 表达式语句
由一个表达式+分号组成,最典型的表达式语句就是赋值语句,例如:
a = 3 // 表达式score >= 90 // 表达式score = 90; // 表达式语句
4. 空语句
只有一个分号,什么都不做,例如:
;for(;;)
5. 复合语句
用{...}括起来的若干个语句,例如:
{z = z +y;t = z / 100;printf("%f\n",t);// 超过1条语句就是复合语句}