今天,学习了C Primer Plus的第三章。本章中,数据之间的转换有些复杂;使用转换说明打印各种类型的值较不易记忆,还应多加练习,熟能生巧。
现将知识点总结如下:
- 在printf()中使用%f来处理浮点数,%.2f中的.2用于精确控制输出,制定输出的浮点数只显示小数点后面两位
- 数据:承载信息的数字和字符
- int关键字表示基本的整数类型,long、short、unsigned和signed用于提供基本整形类型的变式
- char关键字用于指定字母和其他字符(eg:#、$、%和*),也可表示较小的整数(实际储存的是整数而不是字符)
- _Complex和_Imaginary分别表示复数和虚数
- 按计算机的储存方式可将关键字的类型分为两大基本类型:整数类型和浮点数类型
- 位、字节和字是描述计算机数据单元或存储单元的术语
- 位:最小的存储单元,可以存储0或1。位是计算机内存的基本构建块
- 字节:常用的计算机存储单元,1字节为8位
- 字:设计计算机时给定的自然存储单元
- 浮点数的存储方案:计算机把浮点数分成小数部分和指数部分来表示,而且分开储存这两部分。
- 对于一些算术运算(eg:两个很大的数相减),浮点数损失的精度更多
- C语言中的整数类型可表示不同的取值范围和正负值
- 变量获值途径:赋值 / 通过函数(eg:scanf())获得值 / 初始化变量(为变量赋一个初始值)
- 转换说明:指定printf()使用什么格式来显示一个值
- 0x或0X前缀表示十六进制值,0前缀表示八进制
- 以十进制显示数字,用%d;以八进制显示数字,用%o;以十六进制显示数字,用%x
- 显示各进制数的前缀0、0、和0X,分别使用%#o、%#x、%#X
- 布尔类型是无符号int类型
- unsigned int或unsigned只用于非负值的场合(单独的unsigned相当于unsigned int)
- 字符常量:用单引号括起来的单个字符
- 活跃位置:显示设备中下一个字符将出现的位置
- 在printf()中,%c指明待打印字符
- printf()中的转换说明决定了数据的显示方式,而不是数据的储存方式
- sizeof是内置运算符,以字节为单位给出指定类型的大小
- \b——退格字符(将光标左移一个位置)
- \r——使得光标回到当前行的起始处
- printf()语句把输出发送到中间储存区域(缓冲区),然后缓冲区的内容再不断发送到屏幕上(从缓冲区把数据发送到屏幕或文件称为刷新缓冲区)
-
unsigned long long(十六进制) short(十进制/八进制) unsigned long signed long long %u %ld %lx %hd / %ho %lu %lld
例题3.3代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
int num = 100;
printf("10的十进制表示为%d,十六进制表示为%x,八进制表示为%o\n", num, num, num);
printf("10的十进制表示为%d,十六进制表示为%#x,八进制表示为%#o\n", num, num, num);
system("pause");
return 0;
}
运行结果:
例题3.4代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
unsigned int un = 3000000000;
short end = 200;
long big = 65537;
long long verybig = 12345678905896;
printf("un=%u and not %d\n", un, un);
printf("end=%hd and not %d\n", end, end);
printf("big=%ld and not %hd\n", big, big);
printf("verybig=%lld and not %ld\n", verybig, verybig);
system("pause");
return 0;
}
运行结果: