IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 《C Primer Plus》—— 数据与C -> 正文阅读

[C++知识库]《C Primer Plus》—— 数据与C

目录

一 整数类型

二 char类型

三 可移植类型

四 浮点数类型

五 刷新输出


之前因为考试原因拖了几天,接下来好好看书^_^以下内容是我读《C Primer Plus》的重点整理。?

一 整数类型

1 8进制数与16进制数

A ——8进制数:072、013? ? ? ?前缀是0?

? ?——16进制数:0x10、0X37? 前缀是0x或0X

使用不同进制数只是为方便,不会影响数被存储方式。

例如:072相当于58;0x16相当于16。

B 对16进制来说,它的每一位恰好由4位二进制数表示。

例如:十六进制的3用二进制可表示为0011,十六进制的4用二进制可表示为0100,

那十六进制的34用二进制表示为00110100,十六进制的43用二进制表示为01000011;

C?打印格式:8进制数——%o,%#o

? ? ? ? ? ? ? ? ? ? 16进制数——%x,%#x(使用#可以把它的前缀打印出来)

2 整数溢出

对于无符号和有符号整数,当达到它能表示的最大值时,会重新从起点开始,如:

实际上,溢出行为是未定义的,以上比较有代表性。?

3 打印整数类型

转换说明相当于告诉printf()这个数是什么类型然后根据内存中的存储把数打印出来。所以printf()的转换说明决定数据的显示方式而不是存储方式。

使用错误的转换说明结果可能不同:

二 char类型

1 存储形式

char类型实际上存储的是整数而不是字符,c语言用特定整数表示特定字符.

char grade='A'相当于char grade=65,所以内部存储的是01000001,只占1个字节。

2 转义序列的打印

A 对于\0oo和\xhh,都需要有' '来赋值给字符变量,'\036'相当于整数30对应的字符,‘\x18’相当于整数24对应的字符;(\036中的0可省略)

B 字符4和数字4的区别如上所示 。

3 有无符号?

有些C编译器把char实现为有符号,所以char可表示-128~127;而有些C编译器实现为有符号,要查询对应的编译器手册。但C语言允许在char前用signed或unsigned,可用来处理小整数,省内存。

三 可移植类型

序言:某些类型名在不同系统大小是不一样的,所以C99新增2个头文件让代码能正常跨平台使用。

1 精确宽度整数类型

在引用了stdint.h或inttypes.h后:若int是32位,则int32_t是int的别名,同理也有int16_t此时把代码移植到int是16位、long是32位系统时,会把int32_t作为long的别名。(但计算机的底层系统可能不支持)

2 最小宽度类型

在引用了stdint.h或inttypes.h后:int_least8_t表示至少可容纳8位有符号整数的整数类型,如果最小的整数类型是16位,int_least8_t就会成为这个最小的整数类型的别名。

3 最快最小宽度类型

在引用了stdint.h或inttypes.h后:int_fast8_t被定义为系统中对8位有符号值而言运算最快的整数类型别名。

4 uintmax_t表示当前系统最大的无符号整数类型,intmax_t同理。

5 打印格式(定义在inttypes.h中)

%"PRId32"—— int32_t

%"PRIdLEAST8"——int_least8_t;

%"PRIdFAST8"—— int_fast8_t;

%"PRIdMAX"—— intmax_t;

%"PRIuMAX"—— uintmax_t;

这里的8和32,它们是可以换成8、16、32、64的。

四 浮点数类型

数字科学计数法指数计数法
100000.01.0×10^51.0e5 或 1.0E5
123000.01.23×10^51.23e5 或1.23E5
322.563.2256×10^23.2256e2 或 3.2256E2
0.0565.6×10^(-2)5.6E-2 或 5.6e-2

1 float类型

至少能表示6位有效数字,这里的有效数字指化为指数计数法后,e/E前面的部分的有效数字。

指数范围至少是-37~37.通常8位用于表示指数的值和符号,24位用于表示非指数部分。

2 double类型

至少能表示13位有效数字,但指数范围至少也是-37~37 。

3 long double类型

C只保证long double的精度至少与double相同。

4 浮点型常量

A 可以无小数点(3E5)或指数部分(15.70),不能同时省略;

可以省略小数部分(3.E16)或整数部分(.45e3),不能同时省略。

但千万不要在浮点型常量中间加空格。?

B 默认情况下,编译器假定浮点型常量是double类型,在4.0和3.0后加f或F可覆盖默认设置。使用l或L后缀使小数成为long double类型,如3.14L。

float k=4.0*3.0;
//4.0和3.0被存储为64位的double类型,使用double型进行乘法运算,然后把乘积截断成float类型宽度

C 可以用16进制表示浮点型常量

在十六进制数前加上0x或0X,用p或P表示e或E,用2的幂代替10的幂。例:

0xa.1bp10——a表示十六进制的10,b表示十六进制的11,p10表示2^10

所以0xa.1bp10=10×16^0+1×16^(-1)+11×16^(-2)×1024

D 转换说明

%f —— float/double小数表示;

%e——指数计数法的浮点数float/double;

%a——十六进制浮点数表示float/double;

%Le——指数计数法的浮点数long double;

%La——十六进制浮点数表示long double;

%Lf——long double小数表示

E 浮点值的上溢和下溢

上溢:若float最大浮点数是3.4E38,当超过当前float类型能表达的范围,会给float类型变符一个表示无穷大的特定值——inf或infinity

下溢:当浮点数的指数部分为最小值时(假设为0.3548e-37),此时我们除以一个10,由于指数部分无法减少,所以计算机会把尾数部分(小数点后面的数)的位向右移,空出一个二进制位,并丢弃最后一个二进制数。

F 特殊浮点值——NaN(not a number)

给asin()函数传递一个数,该函数返回一个角度,即arcsinx,x为传入的数。x不能大于1,否则会返回NaN.printf()会显示为nan、NaN或其它类似内容。

五 刷新输出

这里要了解缓冲区这个术语。

1 printf()把输出发送到屏幕:printf()先把输出发送到一个叫缓冲区的中间存储区域,然后当缓冲区满遇到换行字符需要输入时才会把内容发送到屏幕;

2 刷新缓冲区:从缓冲区把数据发送到屏幕或文件被称为刷新缓冲区。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:48:36  更:2022-01-11 23:49:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:22:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码