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

学习笔记|printf函数的实现|不同操作系统中的换行|数的进制:2进制、10进制、16进制转换|STC32G单片机视频开发教程(冲哥)|第五集:C语言基础

文章目录

  • 1.C语言 printf函数的实现
    • Tips:ASCII码表
    • Tips:找不到头文件怎么办?
    • 主函数添加程序:
    • 常规用法:
      • Tips:不同操作系统中的换行
  • ⒉数的进制:2进制、10进制、16进制.
    • 常见的对应:
    • 应用:整体端口的操作
  • 3.C语言常用运算符
  • 1、算术运算符
  • 2、位运算符
    • 测试代码
  • 4.数据的基本类型
  • 总结
  • 课后练习:自己练习一下printf的用法。

1.C语言 printf函数的实现

printf 是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息。printf是C语言标准库函数,定义于头文件 <stdio.h>。printf 函数的一般调用格式为:printf(“<格式化字符串>”, <参量表>) [1] 。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
STC32中对printf重新进行了实现。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Tips:ASCII码表

在这里插入图片描述

Tips:找不到头文件怎么办?

冲哥视频附带的每课测试程序会用到一些头文件,都在每课资源包的COMM文件夹中,打开工程后options-C251加入lib path中即可 :
在这里插入图片描述

之后重新编译,代码通过。
注意:开始本节程序代码添加前,必须有一次正确的编译。

主函数添加程序:

		if( DeviceState != DEVSTATE_CONFIGURED ) 	//continue;if( bUsbOutReady ){usb_OUT_done(); //接收应答(固定格式)//用户需执行的printf代码段}

常规用法:

			printf("%03.3f\r\n",1.12);printf("%u \r\n",1<<3);

打开上节课写过的demo:0.Sample -CDC,重命名为:C-Printf的实现,打开工程,并编译,无问题,无警告。
注册COMM引用的头文件需采用冲哥视频配套配件,与最新版的头文件存在差异,会造成编译失败。
打开STC-ISP,重复延时选2-3s,因为CDC串口生成需要点时间。
可以勾选每次下载前都先发送自定义命令和当目标文件变化时自动装载并发送下载命令,下载至开发板。
在这里插入图片描述
选USB一CDC/串口助手:
在这里插入图片描述
可以看到串口返回了数据(文本模式),后期可以通过printf实现温度等数据的打印输出。

Tips:不同操作系统中的换行

在Windows系统中我们输入回车时,输入的字符是\r\n,unix系统中回车为\n, mac系统中回车的字符为\r。
一个16进制的数代表一个字符,以字符“0”为例,16进制为30,转换为十进制是48:
在这里插入图片描述
在这里插入图片描述

⒉数的进制:2进制、10进制、16进制.

常见的对应:

在这里插入图片描述
在这里插入图片描述

16进制的f代表了2进制里的4个位,
在这里插入图片描述
二进制转为10进制的计算方法:在这里插入图片描述
在这里插入图片描述
10进制转16进制,可以用10进制数先除以16,得到整数15,对应“f”(十位)。
在这里插入图片描述
剩余11,对应b,所有251对应fb,和计算器结果相符:
在这里插入图片描述

2进制转16进制数,4位一组(2^4=16)对应1个16进制数,之后按位对应即可:

在这里插入图片描述

应用:整体端口的操作

设置P2点灯代码为:P2 = 0xED; //11101101

3.C语言常用运算符

1、算术运算符

加(+)减(—)乘(*)除(/)
模(余)运算符(%):不允许出现浮点型,余数正负取决于被除数正负
自增(++i,–i;i++,i–)

2、位运算符

右移(>>)左移(<<)
按位与(&)
按位或(|)
按位异或(^)
取反(~)

测试代码

			printf("%u \r\n",1<<1);printf("%u \r\n",1<<2);printf("%u \r\n",1<<3);printf("%u \r\n",0x11 & 0x10); //printf("%u \r\n",0x11 | 0x10); //printf("%u \r\n",~0x11); //

代码运算结果:
在这里插入图片描述

左移运算:
在这里插入图片描述
代码运算解析:
在这里插入图片描述

4.数据的基本类型

在这里插入图片描述

总结

1.学会printf的格式化输出(后面会反复用到)
2.了解进制数
3.学会加减乘除等运算符
4.了解数据类型和数值范围

课后练习:自己练习一下printf的用法。

相关文章:

学习笔记|printf函数的实现|不同操作系统中的换行|数的进制:2进制、10进制、16进制转换|STC32G单片机视频开发教程(冲哥)|第五集:C语言基础

文章目录 1.C语言 printf函数的实现Tips&#xff1a;ASCII码表Tips&#xff1a;找不到头文件怎么办&#xff1f;主函数添加程序:常规用法:Tips&#xff1a;不同操作系统中的换行 ⒉数的进制:2进制、10进制、16进制.常见的对应&#xff1a;应用&#xff1a;整体端口的操作 3.C语…...

线性代数复习公式整理(自用/持续更新)

第一章 行列式 设A、B为n阶矩阵 ∣ A T ∣ ∣ A ∣ \left | A^T \right | \left | A \right | ​AT ​∣A∣ ∣ A m ∣ ∣ A ∣ m \left | A^m \right | \left | A \right | ^m ∣Am∣∣A∣m ∣ k A ∣ k n ∣ A ∣ \left | kA \right | k^n\left | A \right | ∣kA∣kn∣A…...

QEMU源码全解析34 —— Machine(4)

接前一篇文章&#xff1a;QEMU源码全解析33 —— Machine&#xff08;3&#xff09; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; 上一回围绕DEF…...

引用Boost库 CMakeList的写法

引用Boost库 CMakeList的写法 flyfish 环境arm cmake_minimum_required(VERSION 3.5)project(example LANGUAGES CXX)set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON)set(BOOST_PREFIX /media/Boost/build/out/arm64-v8a/) set(BOOST_INCLUDE_DIR "${…...

Kibana 可视化数据分析以及es常用的数据分析函数

一、Kibana 可视化数据分析 1、Discover 的使用及生成报表&#xff1a;https://elasticstack.blog.csdn.net/article/details/131119502 2、Dashboard的使用&#xff1a;https://elasticstack.blog.csdn.net/article/details/131121890 该文档主要介绍Dashboard中的Lens使用…...

golang云原生怎么学?

学习golang云原生有哪些好处&#xff0c;他们的优缺点又有哪些&#xff1f; 一.好处有哪些&#xff1f; 1.高效性能&#xff1a;Golang是一门编译型语言&#xff0c;具有卓越的执行效率和并发处理能力。在云原生环境中&#xff0c;高效的性能对于应对大规模和高负载的分布式系…...

Jenkins+Nginx+vue

安装nodejs 在这里插入图片描述 echo off xcopy C:\ProgramData\Jenkins\.jenkins\workspace\super_manage_vue\dist F:\java\www\super_manage_vue\ /s /e /y echo 复制文件完成 exit安装niginx 配置文件如下 #user nobody; worker_processes 1;#error_log logs/error.lo…...

【vue 监听页面滑动到底部】

监听页面滑动到底部 IntersectionObserverscroll 事件监听器 IntersectionObserver 在 Vue 中监听触底可以通过使用IntersectionObserver实现。IntersectionObserver是一个可以异步观察目标元素与其祖先或视窗交叉状态的API。当目标元素进入或退出视口时&#xff0c;会触发Int…...

(一)创建型设计模式:2、单例模式(C++实现实例 线程安全)

目录 1、单例模式&#xff08;Singleton Pattern&#xff09;的含义 2、单例模式的优缺点 &#xff08;1&#xff09;优点&#xff1a; &#xff08;2&#xff09;缺点&#xff1a; 3、C实现单例模式的示例&#xff08;简单&#xff09; 4、C实现单例模式的示例&#xff…...

《练习100》86~90

题目86 # 生成一个包含20个随机整数&#xff08;100以内&#xff09;的列表&#xff0c;对其中偶数索引&#xff08;下标&#xff09;的数据进行降序排列&#xff0c;奇数索引的元素不变 import random list1 [random.randint(0,100) for _ in range(20)] list2 list1[::2] …...

C++——命名空间、输入、输出

在我们接触C之前&#xff0c;C语言中有时候会有使用全局变量&#xff0c;全局变量在使用过程中可能会发生冲突&#xff0c;这个冲突有时会是我们与库之间的冲突&#xff0c;有时又会是我们自己定义的之间的冲突&#xff0c;那么这时候命名空间的出现将很好的解决这个问题&#…...

解锁滴滴ES的性能潜力:JDK 17和ZGC的升级之路

前文介绍了滴滴自研的ES强一致性多活是如何实现的&#xff0c;其中也提到为了提升查询性能和解决查询毛刺问题&#xff0c;滴滴ES原地升级JDK17和ZGC&#xff0c;在这个过程中我们遇到了哪些问题&#xff0c;怎样解决的&#xff0c;以及最终上线效果如何&#xff0c;这篇文章就…...

Permutation and Primes 2023牛客暑期多校训练营8 J

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;给出一个数n&#xff0c;要求构造一个n的排列&#xff0c;满足相邻两个数的差或和是一个奇质数 2<n<1e5 思路&#xff1a;要满足相邻数的差或和是奇质数的话只有三种情况&#xff0c;要么当前数a[i]a[i-1]pr…...

centos如何配置IP地址?

CentOS如何查看和临时配置IP地址 CentOS系统中&#xff0c;可以通过使用ifconfig命令来查看当前本机的IP地址信息。输入ifconfig即可显示当前网络接口的IP地址、网络掩码和网关信息。如果需要设置临时IP地址&#xff0c;可以使用ifconfig命令后接网卡名称和需要设置的IP地址、网…...

git clone 报错Filename too long

1.使用git clone代码&#xff0c;爆出Filename too long错误 2.原因分析 因为我很少看git clone日志&#xff0c;所以从未想过是clone异常&#xff0c;而且也看到代码clone下来了&#xff0c;所以我就显然以为代码clone成功&#xff0c;但是使用idea打开代码后发现大量代码无法…...

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台3

吃完快餐粥&#xff0c;除了粥的味道不错之外&#xff0c;我对个快餐盒的圆盖子产生了兴趣&#xff0c;能否做个极低成本的简易机器人呢&#xff1f;也许只需要二十元左右 知识点&#xff1a;轮子&#xff08;wheel&#xff09; 中国词语。是用不同材料制成的圆形滚动物体。简…...

redis String类型命令

Redis的String类型是一种简单的键值对数据结构&#xff0c;常用的String类型命令有&#xff1a; SET key value&#xff1a;设置指定key的值为value。GET key&#xff1a;获取指定key的值。DEL key&#xff1a;删除指定key及其对应的值。INCR key&#xff1a;将指定key的值加1…...

Blazor 简单组件(0):简单介绍

文章目录 前言说明环境安装 前言 Blazor 这个技术还是比较新&#xff0c;相关的UI组件还在完善&#xff0c;我这里提供一下我个人的组件开发。 说明 本UI组件是基于BootstrapBlazor(以下简称BB)开发。 BootstrapBlazor 文档 环境安装 C#小轮子&#xff1a;Visual Studio自…...

在vue3+vite项目中使用jsx语法

如果我掏出下图&#xff0c;阁下除了私信我加入学习群&#xff0c;还能如何应对&#xff1f; 正文开始 前言一、下载资源二、利用vite工具引入babel插件总结 前言 最近在为部署人员开发辅助部署的工具&#xff0c;技术栈是vue3viteelectron&#xff0c;在使用jsx语法时&#x…...

HCIA 路由器工作原理 及其 静态路由配置

目录 1、路由器工作原理 2、获取未知网段的方法&#xff1a; 3、静态路由 1&#xff09;写法&#xff1a; 2&#xff09;扩展配置 a、环回接口 配置命令&#xff1a; 环回接口的作用&#xff1a; b、手工汇总 手工汇总作用&#xff1a; c、路由黑洞 d、缺省路由 配置…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...