Day3 内容梳理:
1、Chapter 2 基本数据类型(共4小节):
上(本文):2.1 关键字,2.2 数据类型(字符型、整型、浮点型)
下(下一篇文):2.3 进制转换, 2.4 数据溢出问题
Chapter 2 数据类型
2.1 关键字
C语言共有32个关键字
数据类型关键字(12个) | 字符型:char 整型:short ,int,long 浮点型:float,double 类型修饰符:signed,unsigned (无符号) 复合类型:struct (定义结构体),union (定义联合体),enum (枚举类) 空类型:void (表示函数返回值为空 / 函数没有参数 / void*表示万能指针) |
控制语句关键字(12个) | 条件判断类: if / if - else / if - elif - ...- else 分支语句:switch,case,default 循环类: for / do - while / while 约束语句:break,continue 跳转语句:goto (可以在任何位置进行跳转) 结束语句:return (在函数中结束本函数 / 在主函数中结束程序的执行) |
存储类关键字(5个) | auto (在函数内部定义局部变量,一般情况可不写), extern (声明,但在声明的时候可忽略此关键字), register (标注将被频繁使用的变量,并将其保存在CPU寄存器中,加快访问), static (定义静态数据和静态函数), const (定义常量,是一种值不能发生改变的量,一般以全大写的方式命名) |
其他关键字(3个) | sizeof (计算一种数据类型在内存中占的大小), typeof (为一种已存在的数据类型起个别名 / 定义函数指针), volatile (防止编译器优化) |
补充:指针类型有char*,int*,int**,void*等等
2.2 数据类型
2.2.0 常量 & 变量
(1)定义变量
格式:数据类型 变量名 = 值 ;
变量的命名规则:
①不能使用系统关键字,比如上面提到的char int float等等。
②可结合下划线、数字使用,比如total_price,price1 price2等。
③不允许以数字开头,比如price1可以,但1price不行。
④标识符区分大小写,比如a和A就是两个不同的变量。
⑤要见名知意,最好是能直接体现变量具备的功能、能进行的操作等。
(2)定义常量
常量有两种定义方式,二者区别在于 ; 和=
①宏定义:在函数外以定义,格式为:#define 大写的常量名 值
②const关键字:在函数中定义,格式为:const 数据类型 常量名 = 值 ;
更推荐用第一种方式,因为第二种不太安全,在后续章节会学到用指针修改常量,不太安全。
例子:定义常量pi,假设半径为1,打印圆的面积
(3)打印语句的占位符
%d:输出一个有符号的10进制int类型(10和-10都能正确输出)
%f:输出浮点类型,四舍五入保留六位小数
signed:有符号,可以为正数或负数
%u:输出一个无符号的10进制int类型(能正确输出10,无法正确输出-10)
%x:输出一个八进制整型
%o:输出一个十六进制整型
%c:输出一个char类型的字符
2.2.1 字符型(char)
char:只能存一个字符,并用单引号括起来。占位符为"%c"。
char的本质就是1字节大小的整型(通过ASCII码调取)。
(例如char ch = 'a';)
(例如char ch = '0';对应返回ASCII的48。与int a = 0;不同)
转义字符:
\\:代表一个反斜线字符 \
\n:代表换行
\':代表一个单引号
\":代表一个双引号(比如:printf("\"你好\""); 输出“你好”)
%%:代表一个百分号(比如:printf("30%%");输出30%)
\?:代表一个问号
\r:代表回车,将当前的位置移到本行开头
2.2.2 整型(short / int / long)
(1) 输入 & 输出
可通过键入来给变量赋值,需要用到3个内容:
①键入语句 scanf()
②赋值符号 &
③一条位于#include代码之上的命令语句(红框圈起来的部分),以忽略系统对键入赋值不够安全的警告。不输入这条则程序无法运行。
如果输入的内容不是规定的类型,比如需要个int但输入的是float,则数据出错。
(2) 取值范围
当空间更大的类型接收一个空间更小的类型时,不会出错(因为占用空间足够放下)。
short <= int <= long,也就是说short类型可以放在int、long类型里,int类型可放long类型中。
但是long类型无法放入short和int类型中,会报错。
数据类型 | 占用空间 | 打印语句的占位符 |
short 短整型 | 2字节 | %hd |
int 整型 | 4字节 | %d |
long 长整型 | Window为4字节 32位Linux为4字节 64位Linux为8字节 | %ld <--是小写的L |
sizeof可以用于计算数据类型在内存中所占的字节(Byte)大小,而1 Byte = 8 Bit
2.2.3 浮点型(float / double)
存储小数,分为单精度浮点型(float)、双精度浮点型(double)。
double型变量能表示的浮点数要比float型更精准,但是因为都会四舍五入,而产生一些误差。
定义方式:float a = 3.14F; 或者 long a = 34L
大小写无所谓,只是大写的话看得更清晰。