目录
前言
C语言中提供了很多数据类型来描述生活中的各种数据。比如整型(int)用于表示整数,例如年龄、车牌号码。浮点型(float)用于表示带有小数点的数字,例如身高、体重。这些生活中的数字叫做常量,即不会被人为改变的量。本篇文章仅介绍了内置类型,不包括自定义类型。
一、数据类型
数据类型是一种编程语言中用于定义数据存储特定类型的概念。不同的数据类型具有不同的特性和操作方法。每个数据类型的长度在不同的编译器或操作系统中有所差异,可以使用sizeof函数来测量。常见的数据类型包括整型、浮点型、字符型、布尔类型等。
1. 整型
整型表示整数值,可以是正数、负数或零。例如:-10, 0, 100。
整型(int)是用来存储整数值的数据类型,它通常占用4个字节(32位),可以表示的范围是-2,147,483,648 到 2,147,483,647。
短整型(short)通常占用2个字节(16位)。它的取值范围较小,一般为-32,768到32,767。
长整型(long)通常占用4个字节(32位)。它的取值范围较大,一般为-2,147,483,648到2,147,483,647。
更长的整型(long long)通常占用8个字节(64位),可以表示的取值范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
2. 浮点型
浮点型表示带有小数部分的数值。例如:3.14, -2.5, 1.0。
单精度和双精度是浮点数的两种表示方式,其主要差别在于精度和占用的存储空间。单精度浮点数使用32位(4字节)来表示,双精度浮点数使用64位(8字节)来表示。由于存储空间的差异,双精度浮点数能够表示更大范围的数字,以及更高的精度。单精度浮点数通常能够精确表示6到7位十进制数,而双精度浮点数能够精确表示15到16位十进制数。
3. 字符型
字符型用于表示文本或字符的数据。它可以包含单个字符或由多个字符组成的字符串。
4. 布尔类型
布尔类型(_Bool)是一种表示逻辑值的数据类型,只有两个取值:真(true)和假(false)。布尔类型的使用需要包含头文件stdbool.h,在计算机编程中,布尔类型常用于判断条件和控制程序流程。例如,用布尔类型来表示一个变量是否满足某个条件,或者判断一个条件语句的真假。
在C语言中,可以使用#define指令来定义宏(宏定义)。宏定义可以将一个标识符(通常是一个函数名或一个常量)替换为一个值、一个表达式或一段代码。宏定义的一般语法如下:
#define 标识符 替换内容。
bool flag = true;表示声明了一个bool类型的变量flag并赋予了初始数值,if(flag)表示如果括号里面的条件为真,那么就执行if下面的一条语句(不使用大括号时),C语言中0为假,非0为真,关于这些的具体描述后面会讲到。
可能有人会疑惑,明明C语言中的0和1就可以判断真假,为什么还需要布尔类型,答案如下:
首先布尔类型可以节省内存空间。布尔类型只需要存储一个比特位(bit),即一个字节的八分之一空间。相比于其他数据类型,如整数、浮点数等,布尔类型占用的内存空间更小。
其次布尔类型可以提高代码的可读性。通过使用布尔类型,可以直观地表达条件的真假。例如,将某个变量的值设置为True,可以很清晰地表示该条件成立;将变量的值设置为False,可以表达该条件不成立。
总而言之,布尔类型可以提供一种简洁、方便和高效地存储和判断条件的方式,从而增强程序的可读性和可维护性。
5. 选择取值范围
上述的数据类型很多,尤其数整型类型就有short、int、long、long long四种,为什么呢?其实每⼀种数据类型有自己的取值范围,也就是存储的数值的最大值和最小值的区间,有了丰富的类 型,我们就可以在适当的场景下去选择适合的类型。
6. sizeof函数
sizeof 是⼀个关键字,也是操作符,是专门用来计算数据类型长度的,单位是字节。sizeof 操作符的操作数可以是类型,也可以是变量或者表达式。sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。sizeof 的计算结果是 size_t 类型的。
它的用法是sizeof( 数据类型),sizeof表达式,输出格式为%zd,\n的意思是换行,下面是VS X64配置下的执行结果。
7. 无符号和有符号类型
C语言使用 signed 和 unsigned 关键字修饰字符型和整型类型。
unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数。
signed 关键字,表示一个类型带有正负号,包含负值。
对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。 由于这是默认情况,关键字 signed ⼀般都省略不写,但是写了也不算错。
int 类型也可以不带正负号,只表示非负整数。这时就必须使用关键字 unsigned 声明变量。
整数变量声明为 unsigned 的好处是,同样长度的内存能够表示的最大整数值,增大了一倍。 比如,16位的 signed short int 的取值范围是:-32768~32767,最大是32767;而unsigned short int 的取值范围是:0~65535,最大值增大到了65,535。
字符类型 char 也可以设置 signed 和 unsigned 。signed char范围为 -128 到 127,unsigned char范围为 0 到 255。
总结:
当我们需要解决一个实际问题,并编写解决问题的程序时,我们应该选择合适的数据类型。
如判断真假可使用布尔类型,圆周率使用浮点型等等。