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

c语言第四天笔记

关于 ++混合操作,不同计算结果推理

第一种编译结果:

int i = 5;

int sum = (++i) + (++i)

= 6 + 7

= 13

第二种编译结果:

int i = 5;

int sum = (++i) + (++i)

= 6 + 7

= 7 + 7 前面的7是因为后面i的变化被影响后,重新赋值

= 14

第一种编译结果:

int i = 5;

int sum = (++i)+(i++)

= 6 + 6

= 12

第二种编译结果:

int i = 5;

int sum = (++i)+(i++)

= 6 + 6

= 7 + 6 前面的7是因为后面i的变化被影响后,重新赋值

= 13

注意:

算数运算符,运算结果是数值类型

关系运算符,运算结果是boolean类型(其实就是int的 0-假,非0-真)

逻辑运算符,运算结果是boolean类型(其实就是int的 0-假,非0-真)

运算符

位运算符

说明:按位(bit) 来进行运算操作的运算符。

语法:~ & | ^ <<>>

~:按位取反

说明:单目运算符,数据的每一个bit位取反,也就是二进制数位上的1变0,0变1。

举例:

&:按位与

语法: a & b

说明:首先将参与计算的操作数转换为二级制,然后按照每一位进行对齐,处理结果如下:

总结:如果我们前后两个操作数对齐位置上的二进制数字都是1,其结果是1,否则结果都是0

|:按位或

语法: a | b

说明:首先将参与计算的操作数转换为二级制,然后按照每一位进行对齐,处理结果如下:

总结:如果我们前后两个操作数对齐位置上的二进制数字只要有1,其结果是1,否则结果都是0

^:按位异或

语法: a ^ b  

说明:首先将参与计算的操作数转换为二级制,然后按照每一位进行对齐,处理结果如下:

总结:不同为1,相同为0

左移,按bit位往左偏移

1. 无符号左移:

语法: 操作数<< 移动位数(bit位)

2. 有符号左移:

语法: 操作数 >>移动位数(bit位)

>>:右移,按bit位往右偏移

1. 无符号右移:

语法: 操作数 >> 移动位数(bit位)

2. 有符号右移:

语法: 操作数 >> 移动位数(bit位)

案例:

注意

1. 在进行移位运算的时候,凡是被移出去的位统统丢弃,凡是空出来的位统统补0。移位运算针对的 是无符号整数.

2. 如果非要进行有符号的移位运算,那么左移的时候,空出来的补0,右移的时候,空出来的补符号 位(原码阶段)

其他运算符

赋值运算符

包含: = ,由 右 -> 左,优先级排倒数第二。

注意:赋值运算符的左边(左操作数)必须是可写的地址。

复合赋值运算符

包含: += -= *= /= %= ,由 右 -> 左,优先级倒数第二。

三目运算符

语法: 表达式1?表达式2:表达式3 ,其实就是if..else..简化版

求值顺序:

如果表达式1的值为1,则整个条件运算表达式的值为表达式2的值;

如果表达式1的值为0,则整个条件运算表达式的值为表达式3的值;

练习

1. 使用三目运算符比较三个任意整型数的最大值?

sizeof(int)

说明:用来计算某种类型或者变量所占的字节数。(中文英文字符集问题,不标准)

逗号运算符(,)

说明:优先级最低,左->右,由多个运算符将多个不同的式子连接起来的表达式称之为逗号表达式

语法:

求值顺序:先求表达式1,再求表达式2,以此类推,整个逗号表达式的值为表达式n的值。

注意:

1. 逗号表达式的优先级最低

2. 运算顺序从左往右

3. 整个逗号表达式的值取决于最右边的表达式的值

举例:

优先级的顺序

C语言程序设计结构

程序 = 数据结构 + 算法

算法:对于问题解决的方法思路或者步骤

算法的特征:

有穷性:问题需要在有限的步骤内完成

可行性:解决步骤和方法思路必须要切实可行

确定性:每一个代码指令要有明确的功能含义

算法的描述:流程图

流程图符号:

C语言程序设计的设计结构

三大结构:顺序结构、分支(选择)结构、循环结构

顺序结构

说明:各操作是按先后顺序执行的。是最简单的一种基本结构。这个也是默认的结构。

流程图:

选择结构

说明:又被称之为分支结构,根据条件是否成立,选择对应的操作。

流程图:

循环结构

说明:

又被称之为重复结构

当型循环

特点:先判断条件,后执行语句,语句可能一次也得不到执行

流程图:

直到型循环

特点:先执行语句,后判断条件,语句至少执行一次

C语言的语句

分类

控制语句:while.. for.. if..else... ...

函数调用语句:scanf(...);

表达式语句:b=3;

空语句:;

复合语句:{...}

关注:输入输出语句(printf()/scanf())

输入输出缓冲机制

概述

缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间, 这些存储空间用来缓冲输入 或者输出的数据,这部分预留的空间叫做缓冲区。缓冲区根据其对应的是 输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

为什么要有缓冲区

1)减少IO设备的操作

2)提高计算机的运行速度。

比如:我们从磁盘里读取信息,先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓 冲区的数据取完后再去磁盘中读取,这样就减少磁盘的读写次数,再加上计算机对缓冲区的操作大大 快于磁盘的操作,故应用缓冲区可大大提高计算机的运行速度

缓冲区的类型

全缓冲:当填满缓冲区之后,才会进行实际IO操作。 比如 对磁盘文件的读写。 ---window 全缓冲大小 4096字节 linux 全缓冲大小 1024字节

行缓冲:当在输入和输出中遇到换行符时,执行真正的IO操作,也就是冲刷缓冲区的数据。比如键盘 输入数据

不带缓冲:也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示 出来。

引发缓冲区的刷新

1、遇到换行符\n

2、缓冲区满(溢出)

3、执行fflush(stdout),手动刷新缓冲区

原理实现

fflush(),才会将输出缓冲区的数据输出到标准输出设备。(打印机也是,我们测试用的是控制台显示 终端)

案例: 6818开发板图像绘制

需求:将一张BMP图片显示到开发板的LCD屏幕上

说明:

屏幕显示:BGR

图片显示:RGB

实现:

RGB --> BGR

B:右移0个字节,也就是移动0位 B >> 0

R:右移2个字节,也就是移动16位 R >> 16

G:右移1个字节,也就是移动8位 G >> 8

相关文章:

c语言第四天笔记

关于 混合操作&#xff0c;不同计算结果推理 第一种编译结果&#xff1a; int i 5; int sum (i) (i) 6 7 13 第二种编译结果&#xff1a; int i 5; int sum (i) (i) 6 7 7 7 前面的7是因为后面i的变化被影响后&#xff0c;重新赋值 14 第一种编译结果&#xff…...

Hive——UDF函数:高德地图API逆地理编码,实现离线解析经纬度转换省市区(离线地址库,非调用高德API)

文章目录 1. 需求背景数据现状业务需求面临技术问题寻求其他方案 2. 运行环境软件版本Maven依赖 3. 获取离线地址库4. Hive UDF函数实现5. 创建Hive UDF函数6. 参考 1. 需求背景 数据现状 目前业务系统某数据库表中记录了约3亿条用户行为数据&#xff0c;其中两列记录了用户触…...

深入解析PHP框架:Symfony框架的魅力与优势

嘿&#xff0c;PHP开发者们&#xff01;今天我们要聊一聊PHP世界中的一颗闪亮明星——Symfony框架。无论是初学者还是经验丰富的开发者&#xff0c;Symfony都为大家提供了强大的工具和灵活的特性。那就跟着我一起&#xff0c;来探索这个强大的PHP框架吧&#xff01; 一、什么是…...

Go语言实战:基于Go1.19的站点模板爬虫技术解析与应用

一、引言 1.1 爬虫技术的背景与意义 在互联网高速发展的时代&#xff0c;数据已经成为新的石油&#xff0c;而爬虫技术则是获取这种“石油”的重要工具。爬虫&#xff0c;又称网络蜘蛛、网络机器人&#xff0c;是一种自动化获取网络上信息的程序。它广泛应用于搜索引擎、数据分…...

5个ArcGIS图源分享

数据是GIS的血液。 我们在《15个在线地图瓦片URL分享》一文中为你分享了15个地图瓦片URL链接&#xff0c;现在再为你分享5个能做ArcGIS中直接加载的图源&#xff01; 并提供了能直接在ArcMAP和ArcGIS Pro的文件&#xff0c;如果你需要这些ArcGIS图源&#xff0c;请在文末查看…...

科普文:万字梳理31个Kafka问题

1、 kafka 是什么,有什么作用 2、Kafka为什么这么快 3、Kafka架构及名词解释 4、Kafka中的AR、ISR、OSR代表什么 5、HW、LEO代表什么 6、ISR收缩性 7、kafka follower如何与leader同步数据 8、Zookeeper 在 Kafka 中的作用&#xff08;早期&#xff09; 9、Kafka如何快…...

Unity UGUI 实战学习笔记(4)

仅作学习&#xff0c;不做任何商业用途 不是源码&#xff0c;不是源码! 是我通过"照虎画猫"写的&#xff0c;可能有些小修改 不提供素材&#xff0c;所以应该不算是盗版资源&#xff0c;侵权删 登录面板UI 登录数据逻辑 这是初始化的数据变量脚本 using System.…...

Python学习和面试中的常见问题及答案

整理了一些关于Python和机器学习算法的高级问题及其详细答案。这些问题涵盖了多个方面&#xff0c;包括数据处理、模型训练、评估、优化和实际应用。 一、Python 编程问题 解释Python中的装饰器&#xff08;Decorators&#xff09;是什么&#xff1f;它们的作用是什么&#xf…...

Mysql-索引视图

目录 1.视图 1.1什么是视图 1.2为什么需要视图 1.3视图的作用和优点 1.4创建视图 1.5更新视图 1.6视图使用规则 1.7修改视图 1.8删除视图 2.索引 2.1什么是索引 2.2索引特点 2.3索引分类 2.4索引优缺点 2.5创建索引 2.6查看索引 2.7删除索引 1.视图 1.1什么是…...

电子签章-开放签应用

开放签电子签章系统开源工具版旨在将电子签章、电子合同系统开发中的前后端核心技术开源开放&#xff0c;适合有技术能力的个人 / 团队学习或自建电子签章 \ 电子合同功能或应用&#xff0c;避免研发同仁在工作过程中重复造轮子&#xff0c;降低电子签章技术研发要求&#xff0…...

Ubuntu下设置文件和文件夹用户组和权限

在 Ubuntu 上&#xff0c;你可以使用 chmod 和 chown 命令来设置当前文件夹下所有文件的权限和所有者。 设置权限&#xff1a; 使用 chmod 命令可以更改文件和目录的权限。例如&#xff0c;要为当前文件夹下的所有文件和子目录设置特定权限&#xff0c;可以使用以下命令&#x…...

JavaSE从零开始到精通(九) - 双列集合

1.前言 Java 中的双列集合主要指的是可以存储键值对的集合类型&#xff0c;其中最常用的包括 Map 接口及其实现类。这些集合允许你以键值对的形式存储和管理数据&#xff0c;提供了便捷的按键访问值的方式。 2. HashMap HashMap 是基于哈希表实现的 Map 接口的类&#xff0c…...

探索 OpenAI GPT-4o Mini:开发者的高效创新工具

探索 OpenAI GPT-4o Mini&#xff1a;开发者的高效创新工具 最近&#xff0c;OpenAI 推出了全新的 GPT-4o Mini 模型&#xff0c;以其出色的性能和极具吸引力的价格&#xff0c;引起了开发者们的广泛关注。作为开发者&#xff0c;你是否已经开始探索这个“迄今为止最具成本效益…...

藏文词典查单词,藏汉双语解释,推荐使用《藏语翻译通》App

《藏语翻译通》App推出了藏文词典、藏汉大词典、新术语等全新在线查单词功能。 藏汉互译 《藏语翻译通》App的核心功能之一是藏汉互译。用户只需输入中文或藏文&#xff0c;即可获得翻译结果。 藏文词典查单词 掌握一门语言&#xff0c;词汇是基础。《藏语翻译通》App内置藏…...

【机器学习基础】初探机器学习

【作者主页】Francek Chen 【专栏介绍】⌈Python机器学习⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;依赖于强大的开…...

SpringBoot轻松实现多数据源切换

一.需求背景 项目需要实现在多个数据源之间读写数据&#xff0c;例如在 A 数据源和 B 数据源读取数据&#xff0c;然后在 C 数据源写入数据 或者 部分业务数据从 A 数据源中读取、部分从B数据源中读取诸如此类需求。本文将简单模拟在SpringBoot项目中实现不同数据源之间读取数…...

Qt 5 当类的信号函数和成员函数,函数名相同时,连接信号和槽的写法。

前言&#xff1a;因为项目需要&#xff0c;软件要在windows7上运行&#xff0c;然后项目目前是qt6写的&#xff0c;然后搜索资料&#xff0c;需要qt5.15.2或之前的版本才能在win7上运行&#xff0c;于是下载了qt5.15.2&#xff0c;将qt6的代码在qt5编译时&#xff0c;很多错误&…...

Vuex 介绍及示例

Vuex 是 Vue.js 的一个状态管理模式和库&#xff0c;用于管理 Vue 应用中的全局状态。它是专门为 Vue.js 应用设计的&#xff0c;充分利用了 Vue 的细粒度响应系统来高效地更新状态。以下是对 Vuex 的一些介绍和它的基本使用方法&#xff1a; 主要概念 State&#xff08;状态&…...

【elementui】记录如何重命名elementui组件名称

在main.js中&#xff0c;就是引入elementui的文件中 import ElementUI from element-ui import { Tree } from element-uiVue.use(ElementUI) Vue.component(el-tree-rename, Tree)...

MySQL面试篇章—MySQL锁机制

文章目录 MySQL的锁机制表级锁 & 行级锁排它锁和共享锁InnoDB行级锁行级锁间隙锁意向共享锁和意向排它锁 InnoDB表级锁死锁锁的优化建议MVCC多版本并发控制MyISAM表级锁表级锁并发插入优化锁调度优化 MySQL的锁机制 表级锁 & 行级锁 表级锁&#xff1a;对整张表加锁&…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...