> 文档中心 > 【C语言:从入坑到入土】第3章:数据

【C语言:从入坑到入土】第3章:数据

目 录

  • 第3章 数据
    • 3.1 变量与常量数据
    • 3.2 数据类型关键字
    • 3.3 C语言中数据类型

第3章 数据

程序离不开数据,把数字、字母和文字输入计算机,就是希望它利用这些数据完成某些任务。例如,需要计算一份利息或显示一份葡萄酒商的排序列表。计算机语言应该有能力描述生活中的问题,故数据类型应该多种多样以适应不同情况。

3.1 变量与常量数据

有些数据类型在程序使用之前已经预先设定好了,在整个程序的运行过程中没有变化,这些称为常量(constant)。其他数据类型在程序运行期间可能会改变或被赋值,这些称为变量(variable)。

#include int main(){//创建一个变量//类型 变量的名字 = 0;推荐//类型 变量的名字;不推荐int age = 20;float weight = 70.3;printf("2022年,我的年龄%d,我的体重%f\n",age,weight);//对于float - %f,对于double - %lf;,对于int - %d;return 0;}

1. 变量分为全局变量和局部变量
全局变量:代码块{ }外部定义的
局部变量:代码块{ }内部定义的
2. 变量的作用域和生命周期
局部变量作用域 - 代码块{ }内部
全局变量作用域 - 整个工程
局部变量的生命周期 - 进入局部范围开始,出去局部范围结束
全局变量的生命周期 - 程序的生命周期

extern int a;//其他文件使用时,需要声明时使用该关键字

3. 常量的表达方法

//1.字面常量 如3.14,10,'a',"adhakj"//2.const 修饰的常变量const int num = 10;//num 再次不可修改,类比于动名词//3.#define 定义的标识符常量#define Num 50//4.枚举常量enum Sex{//这种枚举类型的变量的未来可能取值man = 3,//赋初值woman,sercrt};enum Sex R = man;

注:当局部变量和全局变量名字起冲突的时候,局部优先

3.2 数据类型关键字

1. 关键字表格

符号 含义
char 字符类型
float 浮点数类型
int 整数类型
long 长整数类型
short 短整数类型
double 双浮点数类型
void
signed 有符号的,如正负号
unsigned 无符号的
_Bool 布尔值(False/True)
_complex 复数类型
_Imaginary 虚数类型

2. 位、字节和字
位、字节和字是描述计算机数据单元或存储单元的术语。
位(bit)是最小的存储单位,可以存储0或1(位相当于开关),位是计算机中基本构建块。
字节(byte)是计算机中常用单位。1字节为8位,故1字节有256(2 8 ^8 8)种排列组合,取值范围是(0,255)。
字是设计计算机时给定的自然存储单位。计算机中,字是其用来一次性处理事务的一个固定长度的位组。一个字的位数(即字长)是计算机系统结构中的一个重要特性。8位计算机字长有8位,32位计算机字长有32位,64位也是如此。
3. 整数
整数是没有小数部分的数,计算机以二进制数字存储整数。
例如:整数7以二进制写就是111
使用二进制编码存储整数7
同理,使用八进制和十六进制存储十进制整数也是一样,将底数幂换成8或16,进行换算。
八进制表示方法
在C/C++中,八进制开头加0,来说明这个整数是八进制,如056(十进制46)或-0645(十进制-421)。
格式控制符:%o
\ddd:ddd表示1~3个八进制的数字
十六进制表示方法
在C/C++中,十六进制开头要加0x,来说明这个整数是十六进制数,16进制以0x开头,后面跟数字0-9或字母A~F(不区分大小写),如0x123(十进制291)或-0x6fee(十进制-28654)。
格式控制符:%x
\xdd : dd表示2个十六进制数字
注:要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X
4. 浮点数
浮点数与数学中实数的概念差不多。2.75、3.16E7、7.00 和 2e-8 都是浮点数。这里3.16E7表示3.16x10 7 ^7 7。注意,在一个值后面加上一个小数点,该值就成为一个浮点值。
浮点数存储π值

3.3 C语言中数据类型

十进制:0-1-2-3-4-5-6-7-8-9

英文 汉义 等价代换
byte 字节 8bit
KB - 1024B
MB - 1024KB
GB - 1024MB
- 1024…

在二进制前提下,设有n位比特,可以表示十进制的数字范围是(0, 2 n 2^n 2n-1),
1. int 型
C语言中的整数类型可表示不同的取值范围和正负值。一般情况使用int类型即可,int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。一般来说,16位计算机int值,取值范围是-32768~32767。
①声明int类型;
②初始化变量
定义并初始化变量
③打印int值
%d称为转换说明,格式控制符。格式化字符串中的每个%d都与待打印变量列表中相应的int值匹配。
2. short int (简称 short )型
占用的存储空间可能比int类型少,常用于较小数值的场合以节省空间。与int类似,short是有符号类型。
3. long int (简称 long )型
占用的存储空间可能比int多,适用于较大数值的场合。与int类似,long是有符号类型。
4. long long int (简称 long long)型
占用的储存空间可能比long多,适用于更大数值的场合。该类型至少占64位。与int类似,long long是有符号类型。
5. unsigned int (简称 unsigned)型
只用于非负值的场合。这种类型与有符号类型表示的范围不同,无符号的取值范围0~2 n ^n n-1(n:表示数据类型的位数)
6. 数据类型的选择
如果值太大,编译器会尝试使用unsigned int。如果还不够大,编译器会依次使用long、unsigned long、long long和unsigned long long类型。
如果一个数超出了int类型的取值范围,且在long类型的取值范围内时,使用long类型。然而,对于那些long占用的空间比int大的系统,使用long类型会减慢运算速度。因此,如非必要,请不要使用long类型。另外要注意一点:如果在long类型和int类型占用空间相同的机器上编写代码,当确实需要32位的整数时,应使用long类型而不是int类型,以便把程序移植到16位机后仍然可以正常工作。类似地,如果确实需要64位的整数,应使用long long类型。
如果在int设置为32位的系统中要使用16位的值,应使用short类型以节省存储空间。通常,只有当程序使用相对于系统可用内存较大的整型数组时,才需要重点考虑节省空间的问题。使用short类型的另一个原因是,计算机中某些组件使用的硬件寄存器是16位。

//本文以char为例,表示计算类型所占空间的大小#include int main(){printf("%d\n", sizeof(char));//sizeof() - 计算类型或变量所占空间的大小return 0;}

32位编译器:
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2 3 2 ^32 32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

64位编译器:
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节