C语言学习笔记(一):数据类型

最近看了刘未鹏的《暗时间》,深感思考与写作的好处,于是打算开一个自己的博客,把学习生活中的点滴记录下来。正巧今年过年因为疫情原因回不了家,打算利用这个时间学一下C语言,并把自己的学习笔记和感悟记录在册。

我打算把这个专栏做成学习交流的平台,记录自己阶段学习的结果,既供自己以后查阅、整理,也方便与大家相互交流讨论。学习笔记的记录形式是我个人习惯的分点记录方式,且仅记录我个人认为值得记录的知识点,并非全部。前期可能有点琐碎,不过每个阶段我会进行一次总结,将这些分散的点串联成有逻辑的一条条线。

本文的主题是C语言的基本数据类型。


  1. 除main()主函数之外的其他函数,一般要出现3次:

    • 第一次是函数原型(prototype)/ 声明(declaration);
    • 第二次是函数定义(definition);
    • 第三次是函数调用(call)。
  2. 在32位机器上,不同整数的取值范围

数据类型 位数 范围(注:short ≤ int ≤ long ≤ long long)
short 16 -2^{16-1}\sim2^{16-1}-1(约正负3万之间)
int 32 -2^{32-1}\sim2^{32-1}-1(约正负21亿之间)
long 32 -2^{32-1}\sim2^{32-1}-1(约正负21亿之间)
long long 64 -2^{64-1}\sim2^{64-1}-1(约正负900亿亿之间)
unsigned short 16 0\sim2^{16}-1(约6万)
unsigned int 32 0\sim2^{32}-1(约42亿)
unsigned long 32 0\sim2^{32}-1(约42亿)
unsigned long long 64 0\sim2^{64}-1(约1800亿亿)
  1. 占位符的含义
占位符 含义
%d 以十进制形式读写整数
%u 以无符号十进制形式读写整数
%hd 以十进制形式读写短整数
%ld 以十进制形式读写长整数
%o 以八进制形式读写整数
%x 以十六进制形式读写整数
%c 读写单个字符
%f 以十进制记数法读写float类型浮点数,读double类型浮点数
(注:写入double类型浮点数必须用%lf)
%e 以指数记数法读写float类型浮点数,读double类型浮点数
(注:写入double类型浮点数必须用%le)
%lf 以十进制记数法读写long double类型浮点数
%le 以指数记数法读写long double类型浮点数
  1. 数据溢出:分为上溢(overflow)和下溢(underflow)两种。当超过最大(小)数时,结果又从最小(大)数开始重新计算。

    • 无符号型整数运算过程中发生溢出,会将结果对2^n取模;
    • 有符号型整数运算过程中发生溢出,结果不确定,属于未定义行为,包括:结果出错(最常见)、程序报错、崩溃等。
  2. 字符:用单引号括起来的单个字符

  3. 就浮点数的精度而言,float < double ≤ long double。

  4. 在Dev-C++中,float类型的有效位数是7,double类型的有效位数是16。

  5. 浮点数的上溢(overflow)和下溢(underflow)

    • 上溢:变成无穷大;
    • 下溢:损失精度(有效位数)。
  6. sizeof()是C语言的内置运算符,以字节为单位给出指定类型的大小。C99和C11标准提供%zd转换说明匹配sizeof()的返回类型,一些不支持C99和C11标准的编译器可用%u或%lu代替。

  7. 把一个类型的数值初始化给不同类型的变量时,编译器会把值转换成与变量匹配的类型,这将导致部分数据丢失。

  8. printf()何时输出?引入 缓冲区(buffer) 的概念

    • 缓冲区满;
    • 遇到换行字符时;
    • 需要输入时。

下一章的主题是字符串和输入输出。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容