书海拾遗系列之《C Primer Plus》:第三章数据和C

本文介绍了《C Primer Plus》第三章关于数据和C的内容,重点讲解了printf函数的使用,包括八进制和十六进制前缀显示、无符号和long类型打印、换页符与垂直制表符的含义,以及ASCII码的八进制和十六进制表示。还提及了缓冲区的概念,以及C99新增的十六进制浮点数表示法。

书海拾遗系列之《C Primer Plus》:第三章 数据和C

printf函数的一点点东西

八进制和十六进制的前缀显示

使用printf()函数以八进制显示的格式为%o,以十六进制显示的格式为%x,而这里要说的是,如果要显示各进制数的前缀o,0x和0X,必须分别使用%#o、%#x和%#X,可以通过下面的代码实现对应效果。

#include <stdio.h>
int main(void)
{
	int x = 256;
	printf("dec = %d; octal = %o; hex = %x\n", x,x,x);
	printf("dec = %d; octal = %#o; hex = %#x\n", x,x,x);
}

在这里插入图片描述

无符号以及long类型的打印

而打印long类型的值,需要使用%ld(也就是长整型),这会以十进制形式打印,如果要以八进制或十六进制打印long类型,可以分别使用%lo和%lx。要打印short类型的值,需要使用%hd。具体如下表所示。打印无符号类型时,需要使用%u,这个u可以和其他符号组合使用,例如%lu就是unsigned long十进制显示。

类型进制形式转换符
long十进制%ld
long八进制%lo
long十六进制%lx
short十进制%hd
short八进制%ho
short十六进制%hx

这里需要注意,虽然在使用常量后缀的时候,大小写都可以,也就是说0x25和0X25都是十六进制的25,但在使用%进行转换的时候只能使用小写字母,而且在使用u表示无符号的时候,必须把u放在后面,比如%lu,如果出现%ul会编译报错

换页符(\f)与垂直制表符(\v)

这两个神奇的转义序列,据说在PC屏幕上会生成一些奇怪的符号,不过在Ubuntu 18.04自带的编译器编译出的结果却是这样的:

#include <stdio.h>
int main(void)
{
	printf("这是换页符\f和垂直制表符\v123");
}

在这里插入图片描述
可见换页符和垂直制表符都有垂直换行的效果,书中说到会产生奇怪的符号,并且光标不会移动,可见对于这两个符号,不同编译器处理方式不同。大多数情况下,只有将其输出到打印机上时才会产生对应描述的效果。

用八进制和十六进制形式表示ASCII码

这是从C90开始就有的表示方法,比如用八进制ASCII码表示一个字符,可以在编码值前面加一个反斜杠(\)并用单引号括起来,下面这几个是等价的:

printf("beep = '\007' = '\07' = '\7');	// 这里的/7也会被解释为八进制ASCII

而十六进制的表示就是用\x加数字,比如表示ASCII中十六进制码10(也就是十进制的16):

printf("Ctrl+P = '\x10' = ’\x010'");

缓冲区的概念

在调用了printf函数后,其实并没有直接将要输出的数据显示到屏幕上,这些数据会先进入一个叫做缓冲区的地方,然后缓冲区内的内容会被系统自动在合适的时候输出到屏幕上,C标准中规定了:当缓冲区满、遇到换行字符或需要输入的时候,就会讲缓冲区中的内容发送到屏幕上,这被称为刷新缓冲区

可移植类型头文件stdint.h和inttypes.h

这里比较典型的就是int32_t,ti的很多库中使用的32位整型数据类型都是这个,在不同的编译平台都会对该类型进行宏定义,将其定义为平台特定的32位类型,这个类型也被称为精确宽度整数类型,但部分编译器可能不支持这个类型。
和精确宽度整数类型对应的,有一种叫做最小宽度类型的,代表是int_least8_t,它的意思是其对应的类型一定是至少有指定宽度的最小整数类型(这里是8bits宽度)。

浮点型常量

也就是

1.2e5
-3.55e2

这样式儿的,只不过,可以没有小数点,或指数部分,但不能同时省略两者。(要不还是都别省了。。。)。可以省略小数部分,或整数部分,但不能同时省略两者。比如:

// 下面是合法的
2E5
19.278
3.E14
.42E-5
// 下面就是非法的
2.
e5
3.14 e0	// 在e指数和小数之间不能有空格

十六进制浮点数(贼冷贼冷的知识)

C99增加的浮点型常量格式(并不是所有编译器都支持该特性),在十六进制数前加上十六进制的前缀,也就是0x或0X,然后用p或P来代替e/E指数,用2的幂次代替10的幂次(所谓的p计数法),比如:

0xa.1fp10

整数部分,0xa就是10,小数部分1f就是1×1/16+15×1/256,p10就是210,所以这个数也就是(10+1×1/16+15/256)×210=10364.0

已经博主授权,源码转载自 https://pan.quark.cn/s/fdfcb1303993 ### 高速电路接口原理与应用详解 #### 引言 信息技术的迅猛进步推动了高速数据传输需求的持续提升,特别是在高性能计算、网络通信等关键领域。为了达成高效的数据交换,高速集成电路间的互连技术成为了研究的热点。本文将系统阐述几种典型的高速接口规范——PECL(Positive Emitter Coupled Logic)、LVECL(Low Voltage Emitter Coupled Logic)、CML(Current Mode Logic)LVDS(Low Voltage Differential Signaling),并深入分析它们的电路构造应用特性。 #### 1. ECL电路基础 ECL电路是早期为应对高速数据传输需求而研发的一种逻辑电路,其运行速度极快,最高可达到10Gbps。通过维持晶体管工作于线性截止区域,ECL电路有效规避了饱区的影响,从而获得了迅速的开关响应。接下来将具体解析ECL电路的构成要素及其运作机制。 #### 1.1 ECL线接收器电路组成 - **差分放大器**:由晶体管Q3、Q4、Q5构成,是整个电路的核心部分。其中,Q5作为恒流源,具备较大的交流等效电阻,能够提供稳定的电流,确保电路的稳定运作。 - **发射极跟随器输出电路**:由Q1、Q2组成,主要用于电平调整输出驱动,确保输出信号与下一级电路的兼容性。 - **偏置电源**:由Q6、Q7以及二极管D1、D2构成,为差分放大器提供可靠的偏置电压,使其始终工作在线性放大区间。 #### 1.2 ECL电路的显著特性 - **高运行速率**:由于晶体管工作在线性截止状态,不受...
源码直接下载地址: https://pan.quark.cn/s/27dcad4290ca Silicon Labs(前身为Silicon Laboratories)为其USB至UART转换控制器开发了一款官方驱动程序,即CP210x驱动,该驱动程序在Windows 10操作系统上表现出色。此驱动确保计算机能够识别并有效通信与使用配备CP210x芯片的设备,包括开发板、模块或USB转串口适配器。CP2012作为CP210x系列中的一个型号,同样受益于该驱动程序的支持。驱动程序版本v6.7.3代表一个较新的升级,其目标在于解决兼容性挑战,增强性能并提升稳定性。"win10"标签突出了该驱动对Windows 10系统的优化及兼容性,暗示用户在Windows 10环境下可以无障碍地运用CP210x设备。压缩包内含的文件如下: 1. `slabvcp.cat`:作为验证文件,用于核实驱动程序的数字签名,确保驱动源自可信渠道且未被篡改。 2. `CP210xVCPInstaller_x64.exe` `CP210xVCPInstaller_x86.exe`:这两个安装程序分别针对64位32位的Windows系统设计,用户需依据自身操作系统选择适配版本进行安装。 3. `slabvcp.inf`:作为驱动配置文档,其中包含驱动程序的安装参数,Windows系统将依据此文件进行驱动安装与配置。 4. `SLAB_License_Agreement_VCP_Windows.txt`:作为许可文件,用户在安装前须仔细阅读并确认同意其中的条款。 5. `dpinst.xml`:该部署脚本旨在简化驱动安装流程,自动化安装过程以确保驱动正确部署至系统。 6. `x86` `x64...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值