四、C文件类型
.h 头文件
.h.gch 头文件的编译结果,它会被优先使用
.c 源文件
.i 预处理文件
.s 汇编文件
.o 目标文件
.so 共享库
.a 静态库
五、存储空间的单位:
Bit 比特 一个二进制位,只能存储0或者1,计算机存储数据的最小单位
Byte 字节 八个二进制位,计算机存储数据的基本单位
Kb 1024字节
Mb 1024Kb
Gb 1024Mb
Tb 1024Gb
Pb 1024Tb
六、数据类型
为什么要对数据进行分类?
1、现实社会中的数据自带类别属性
2、对数据分类可以节约存储空间、提高运行效率
C语言中数据分为两个大类:自建类(程序员自己设计的:结构、联合、类)和内建类(C语言自带)
整形:
signed 有符号
类型 字节数 表示范围
signed char 1 -128~127
signed short 2 -32768~32767
signed int 4 正负20亿
signed long 4/8
signed long long 8 9开头的19位整数
注意:32位系统下signed long是4字节,64位是8字节
注意:signed 不加就代表加
unsigned 无符号
类型 字节数 表示范围
unsigned char 1 0~255
unsigned short 2 0~65535
unsigned int 4 0~40亿
unsigned long 4/8
unsigned long long 8 0~1开头的20位整数
注意:由于定义无符号数据时名字麻烦,标准库把这些类型重新定义
需要包含头文件<stdio.h>
uint8_t uint16_t uint32_t uint64_t
int8_t int16_t int32_t int64_t
浮点型:
float 4
double 8
long double 12/16
注意:采用科学计数法,换算真实数据与二进制数据,因此计算浮点型数据时要比整形数据慢得多,编程时尽量使用整形
注意:关注浮点型的精度,小数点后六位有效
模拟:
字符型:%c
char 字符就是符号或者是图案,在内存中存储的是整数,需要显示成符号或者图案时,计算机会根据ASCII码表中的对应关系显示出相应的符号或图案。
'\0' == 0
'0' == 48
'A' == 65
'a' == 97
布尔型:bool
先有C语言之后才有bool类型,C语言是没有真正的bool类型,在stdbool.h 头文件中用整数进行模拟
bool true false
可以使用sizeof运算符 计算类型、变量占用的字节数
例如:sizeof(int)
七、变量与常量
什么是变量:
在程序运行期间数值可以发生变化的叫变量,相当于存放数据的盒子
定义:
类型 变量名;
int num;
变量名取名规则:
1、由字母、数字、下划线组成
2、不能以数字开头
3、不能与32个C语言关键字重名,能默写
4、见名知意(功能+类型+作用域)
注意:变量的默认值是随机的,为了安全起见,一般都初始化为0
使用:
赋值:变量名 = 数据; num = 100;
运算:变量名 *10; num*10;
变量的输出、输入:
int printf(const char *format, ...);
功能:输出数据
format:"双引号包含的提示信息+占位符"
...:变量名列表
返回值:输出字符个数
练习1:定义各种类型的变量并初始化,使用printf显示
类型占位符:C语言通过占位符的形式传递变量的类型
%hhd %hd %d %ld %lld 有符号
%hhu %hu %u %lu %llu 无符号
%f %lf %LF 浮点型
%c 字符型
int scanf(const char *format, ...);
功能:输入数据到变量
fotmat:"双引号包含的占位符"
...:变量的地址列表 &num
返回值:成功输入的变量的个数
注意:scanf需要的是变量的类型和变量的地址
变量地址 = &变量名
练习2:定义各种类型的变量并初始化,使用scanf输入各个数据,分别printf打印
什么是常量:
程序运行期间数值不能发生变化的叫做常量
100 默认是signed int
100l signed long
100ll signed long long
100u unsigned int
100lu unsigned long
100llu unsigned long long
3.14 默认是 double
3.14f float
3.14l long double
问:定义一个表示100年有多少秒的宏常量?
#define SEC(60*60*24*365*100u)
八、格式化输入输出
%nd 显示n个字符宽度,不够则补空格,右对齐
%0nd 显示n个字符宽度,不够则补0,右对齐
%-nd 显示n个字符宽度,不够则补空格,左对齐
%n.mf 显示n个字符宽度(小数点也算),不够则补空格,m表示显示小数点后几位(五舍六入)
%g 显示浮点型数据,并且不显示小数点后多余的0