温故知新——通过C primer plus重学C语言(一)

本文是博主通过C Primer Plus重学C语言的第一篇,重点介绍了数据类型,包括整型、浮点型、字符型、_Bool型,并探讨了常量、格式化输入输出函数printf()和scanf()的使用,强调了类型匹配和格式说明符的重要作用。
摘要由CSDN通过智能技术生成

温故知新——通过C primer plus重学C语言(一)

引言

博主即将毕业参加工作,从事C语言开发,借此机会在就业之前把基础打牢,今天开始准备陆续整理、记录一些列从找工作开始所学习的技术栈。目的
其一:温故知新,随手笔记梳理已学知识点、主要包括C语言基础算法以及数据结构等;
其二:分享知识,方便给后来之人一些参考,当然也仅限于参考,因为本人的学识浅薄,会有一些疏漏之处,需要读者们能积极指出。

温故知新系列本人打算出三个系列:也就是上面提到的C语言基础以及基于C语言的算法数据结构。当前为第一个系列:C语言基础

具体章节规划

目前的打算是以Stephen Prata的《C Primer Plus》(第6版)的章节作为基础来划分,每一章主要是本人学习过程中整理的笔记以及习题。

一、数据类型

重要概念:位(bit)、字节(Byte)、字(word)
bit是最小存储单元;8bit=1Byte

基本数据类型由11个关键字组成:int, long, short, unsigned, char, float, double, signed, _Bool, _Complex_Imaginary

1.1 整型和浮点型

1.1.1 整型
  • 有符号整型int根据计算机不同有16bit32bit长度,其中左侧第一位为符号位。16bit的int范围为-32768~32767(熟悉范围很重要,这样可以在适当的位置使用适当的类型,避免数据溢出等错误)。
  • C语言默认为十进制、但也可以通过转换说明%o来打印成八进制%x来打印成十六进制
  • 其他整型short intshort(16bit)、long int(32bit)、long long int(64bit)、unsigned int。其中unsigned int范围为0~65535;另外,关键字signedunsigned可以控制是否是有符号类型。
  • 另外一提:size_t是一种很重要的特殊的int类型(我个人是这么理解的),目前看到比较好的解释:

size_t为何这么重要?

1.1.2 浮点型
  • float:至少6位有效数字,且取值范围至少是10-37到1037,一般占16bit
  • double:至少10位有效数字,一般占64bit
  • long double:至少与double精度相同
  • 以float类型的1.6e-19为例,32bit中前24位存储尾数(有效数)即1.68位存储指数的符号和值e-19
  • 默认情况下编译器假定浮点型常量4.0,是double类型,运算过程中可能会发生数据截断,导致速度变慢。在浮点型常量后面加上f或F可以覆盖默认设置如4.0f
  • C99标准中添加了十六进制表示的浮点型常量,可用p计数法例:0xa.1fp10
  • 使用浮点数据时要注意防止上溢下溢

1.2 字符型

书中原话是这么描述char类型的:“char类型用于存储字符,但从技术层面看,char时整数类型。”一般计算机都是按照ASCII码处理字符,ASCII码范围为0~127即27,通常char占8位,足够使用。

C语言中用单引号''括起来的为字符常量

打印非字符–转移序列

转移序列不多介绍,这里只是做了转移序列的汇总(书中的表3.2)

转移序列 含义
\a 警报(ANSI C)
\b 退格
\f 换页
\n 换行(比较常用)
\r 回车
\t 水平制表符
\v 垂直制表符
\\ 反斜杠
\’ 单引号
\" 双引号
\? 问号
\Ooo (注意第一个是大写的o,不是零)每个o表示0到7中的一个
\xhh 每个h表示0到7中的一个

1.3 _Bool型(循环和分支结构常用)

布尔值表示truefalse,原则上只占1bit
C语言中非0(一般用1)为真,0为假

1.4复数和虚数类型

C99标准支持复数和虚数类型,科学计算中常用,这里就暂不详列了

1.4 字符串(这里只是简单提一下,后续会有详细内容)

一句话概括:字符串=字符数组+'\0'

二、常量

2.1 const限定符

C90新增关键字,限定一个变量只读

例如const int MONTHS = 12

2.2 明示常量

通过#define定义的常量。例如C头文件limits.hfloat.h分别定义了整型和浮点型数值的大小:

#define INT_MAX +32767
#define INT_MIN -32768

三、格式化输入输出:printf()scanf()

printf()与scanf()为输入输出函数,也叫I/O函数

这里整理汇总一下printf()scanf()的转换说明、及转换说明的修饰符,可以方便查阅。当然常用的还是要记下来。

3.1 printf()常用转换说明及修饰符

3.1.1 转换说明
转换说明 输出
%a 浮点数、十六进制数和p记数法(C99/C11)
%A 浮点数、十六进制数和p记数法(C99/C11)
%c 单个字符
%d 有符号十进制整数
%e 浮点数,e记数法
%E 浮点数,e记数法
%f 浮点数,十进制记数法
%g 根据值的不同,自动选择%f或%e。%e格式用于指数小于-4或者大于等于精度时
%G 根据值的不同,自动选择%f或%E。%E格式用于指数小于-4或者大于等于精度时
%i 有符号十进制整数(和%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值