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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3270253.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux网络】应用层协议:HTTP 与 HTTPS

本篇博客整理了 TCP/IP 分层模型中应用层的 HTTP 协议和 HTTPS协议&#xff0c;旨在让读者更加深入理解网络协议栈的设计和网络编程。 目录 一、协议是什么 1&#xff09;结构化数据的传输 2&#xff09;序列化和反序列化 补&#xff09;网络版计算器 .1- 协议定制 .2- …

OpenAI推出SearchGPT:革新搜索体验的新工具

引言 原文链接 在信息爆炸的时代&#xff0c;搜索引擎已经成为人们日常生活中不可或缺的工具。然而&#xff0c;传统的搜索引擎在理解复杂查询和提供准确答案方面仍有许多不足。为了解决这一问题&#xff0c;OpenAI与20240725推出了SearchGPT原型&#xff0c;将生成式AI与传统…

【Golang 面试基础题】每日 5 题(九)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

【Android】Fragment与Activity间通信知识总结

文章目录 一、Activity向Fragment通信1.1 通过方法1.1.1 构造方法1.1.1 普通public方法 1.2 通过setArguments方法1.3 通过接口 二、Fragment向Activity通信2.1 通过getActivity2.2 通过接口 三、Fragment之间传递数据通过Activity中转 一、Activity向Fragment通信 1.1 通过方…

聊聊基于Alink库的主成分分析(PCA)

概述 主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;是一种常用的数据降维和特征提取技术&#xff0c;用于将高维数据转换为低维的特征空间。其目标是通过线性变换将原始特征转化为一组新的互相无关的变量&#xff0c;这些新变量称为主成分&…

关于链表、顺序表、栈和队列的一些总结

关于链表、顺序表、栈和堆的一些总结 1.顺序表2.链表2.1 单向链表2.1 带哨兵位双向循环链表 3.栈4.队列 1.顺序表 2.链表 2.1 单向链表 2.1 带哨兵位双向循环链表 3.栈 4.队列

【Matlab】绘图时使用字母控制线型和颜色(内含多图对比示例)

概要 测试了英文字母a-z不同输入下线条的颜色和线型&#xff0c;供参考选择。 语法 plot(x, y, 颜色); 如 plot(x, y, b); 测试 以下测试设置线宽为1.5&#xff0c;代码 x 0: 0.01: 2*pi; y sin(x); plot(x, y, b, LineWidth, 1.5);修改时把 b 改成不同字母即可 ‘a’…

基于关联规则的分类算法(CBA) | 项集、频繁项集、关联规则 | arulesCBA库

基于关联规则的分类算法 目前使用较多且较为简洁的关联规则分类算法是基于关联规则的分类算法&#xff08;Classification Based on Association, CBA&#xff09;&#xff0c;下面将从该算法的相关概念开始介绍。 这部分笔记参考论文&#xff1a;孙菡悦.基于多因素交互效应的…

Linux第五节课(权限02)

1、Linux下的用户分类 root&#xff1a;超级用户普通用户&#xff1a;通过root新建的用户&#xff0c;adduser root不受权限约束&#xff1b;普通用户受权限约束&#xff1b; Linux系统中&#xff0c;所有用户都需要有密码&#xff0c;无论是root还是其他&#xff0c;即便是…

MySQL内如何改变编码格式

查找数据库的编码格式&#xff1a; show variables like character%;具体内容时这些 在创建表时设定编码格式&#xff1a; create database <要创建的数据库的名字> charset utf8; 修改数据库默认编码&#xff1a; set character_set_databaseutf8mb4; character_…

大模型算法备案流程最详细说明【流程+附件】

文章目录 一、语料安全评估 二、黑盒测试 三、模型安全措施评估 四、性能评估 五、性能评估 六、安全性评估 七、可解释性评估 八、法律和合规性评估 九、应急管理措施 十、材料准备 十一、【线下流程】大模型备案线下详细步骤说明 十二、【线上流程】算法备案填报…

【二分查找 数论】2513. 最小化两个数组中的最大值

本文涉及知识 二分查找算法合集 质数、最大公约数、菲蜀定理 LeetCode2513. 最小化两个数组中的最大值 给你两个数组 arr1 和 arr2 &#xff0c;它们一开始都是空的。你需要往它们中添加正整数&#xff0c;使它们满足以下条件&#xff1a; arr1 包含 uniqueCnt1 个 互不相同…

栈和队列<数据结构 C版>

目录 栈&#xff08;Stack&#xff09; 栈的结构体 初始化 销毁 入栈 判空 出栈 取栈顶元素 获取栈个数 测试&#xff1a; 队列&#xff08;Queue&#xff09; 队列的结构体 单个结点 队列 初始化 销毁 入队列&#xff0c;队尾 判空 出队列&#xff0c;队头 …

贪心算法.

哈夫曼树 哈夫曼树&#xff08;Huffman Tree&#xff09;&#xff0c;又称为霍夫曼树或最优二叉树&#xff0c;是一种带权路径长度最短的二叉树&#xff0c;常用于数据压缩。 定义&#xff1a;给定N个权值作为N个叶子结点&#xff0c;构造一棵二叉树&#xff0c;若该树…

大话成像公众号文章阅读学习(一)

系列文章目录 文章目录 系列文章目录前言一、扫射拍摄二、索尼Alpha 9 III2.1. 视频果冻效应2.2 闪光灯同步速度2.3 其他功能 三 A9III 局限性总结 前言 大话成像是一个专注成像的公众号&#xff0c;文章都很好。 今天看的这篇是 特朗普遭枪击后“大片”出自它 文章地址 htt…

Python | Leetcode Python题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; class PeekingIterator:def __init__(self, iterator):self.iterator iteratorself._next iterator.next()self._hasNext iterator.hasNext()def peek(self):return self._nextdef next(self):ret self._nextself._hasNext self.itera…

SGLang 大模型推理框架 qwen2部署使用案例;openai接口调用、requests调用

参考: https://github.com/sgl-project/sglang 纯python写,号称比vllm、tensorRT还快 暂时支持模型 安装 可以pip、源码、docker安装,这里用的pip 注意flashinfer安装最新版,不然会可能出错误ImportError: cannot import name ‘top_k_top_p_sampling_from_probs’ fr…

万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”

在金秋送爽的11月&#xff0c;南京这座历史悠久而又充满活力的城市&#xff0c;即将迎来一场科技盛宴——2024南京智慧城市、物联网、大数据展会。这不仅是一场技术的集会&#xff0c;更是未来生活蓝图的预览&#xff0c;它汇聚了全球顶尖的科技企业、创新者及行业精英&#xf…

1.2 单链表定义及操作实现(链式结构)

1.单链表定义 链式存储&#xff1a;用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性 表简称线性链表。 为了正确表示结点间的逻辑关系&#xff0c;在存储每个结点值的同时&#xff0c;还必须存储指示其直接 后继结点的地址&#xff08;或位置&#xff09;…

04-Charles中的Map Remote和Map Local介绍

Charles提供了Map Remote和Map Local两个功能。 Map Remote是将指定的网络请求重定向到另一个网址。Map Local是将指定的网络请求重定向到本地文件。 一、Map Remote 假设代码中调用了接口A&#xff0c;但是接口A的响应结果不能满足需求&#xff1b;此时&#xff0c;有另一个…