当前位置: 首页 > java >正文

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条语句就是复合语句}
http://www.xdnf.cn/news/15073.html

相关文章:

  • 动态规划初步(完全背包)
  • T16IZ遥控器教程__遥控器与无人机对频
  • 线性回归原理推导与应用(十):逻辑回归多分类实战
  • 视频人脸处理——人脸面部动作提取
  • Spring Boot主从数据库完全教程 - 从零到精通
  • ubuntu22默认安装firefox使用snap安装还老打不开解决办法
  • Unity Demo——3D平台跳跃游戏笔记
  • IDE 关联 Git 操作
  • Flutter、Vue 3 和 React 在 UI 布局比较
  • windows下安装 redis
  • 代账行业数字化破局:从“知道”到“做到”,三步走稳赢!
  • 【Java】【力扣】102.二叉树层序遍历
  • 【TCP/IP】18. 因特网服务质量
  • PyTorch 与 Spring AI 集成实战
  • 【操作系统】线程
  • vue3 el-input 通过数组 获取显示
  • docker 启动中间件
  • LeetCode 148 排序链表解析:高效归并排序实现
  • 搭建渗透测试环境
  • React之旅-05 List Key
  • 力扣 hot100 Day40
  • Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用(341)
  • AI翻唱——So-VITS-SVC
  • mvn能只test单独一个文件吗
  • 攻防世界——web题catcat-new session值伪造
  • 电脑息屏工具,一键黑屏超方便
  • 【LeetCode100】--- 1.两数之和【复习回滚】
  • 学习日记-spring-day45-7.10
  • 深入理解 Linux 中的 stat 函数与文件属性操作
  • 710 Mybatis实战