| |
|
开发:
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 |
目录 之前因为考试原因拖了几天,接下来好好看书^_^以下内容是我读《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()的转换说明决定数据的显示方式而不是存储方式。 使用错误的转换说明结果可能不同:
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的。
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。
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语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |