C语言导航 2.2数据类型
第二节 数据类型
-
数据类型介绍
-
基本数据类型详解
2.2.1 数据类型
说明:数据是计算机程序操作的对象和结果,其类型决定了数据占用内存空间大小、存放格式、取值范围运算规则等。
内容:
(1)基本数据类型:是构成C语言数据类型的最基本要素,其值不可以分解为其他类型。
(2)枚举类型:用于声明一组命名的常数,其值不可以分解为其他类型。
(3)构造数据类型:指可以通过其他的数据类型进行构造,可由程序员自定义 。
(4)空类型:用于显示说明一个函数不返回任何值。
(5)指针类型:用于存储地址的一种数据类型。
2.2.2数据类型详解
说明:定义一个完整数据的类型需要如下写法,但系统会根据定义的位置等因素,将存储级别设为auto,修饰类型设为signed等情况,详见【程序现场2-2-2-1】。
定义写法:[存储级别] [修饰类型] [基本类型or复杂类型] [变量名]
一、基本数据类型
void:即空类型,通常定义无返回值的函数以及空指针。
char:即字符型,用一个字节的空间存储一个字符(ASCII码)。
int:即整型,用四个字节的空间存储一个整型的二进制数。
float:即单精度浮点型,用四个字节的空间存储一个浮点型的二进制数。
double:即双精度浮点型,用八个字节的空间存储一个浮点型的二进制数。
二、修饰类型
short:即短整型,修饰int型后可使整型用2个字节的空间存储一个短整型的二进制数。
long:即长整型,修饰int型后可使整型用4个字节的空间存储一个长整型;修饰double型可使双精度浮点型用16个字节存储一个长双精度浮点型。
signed:即有符号数,可使基本数据类型从负数表示到正数。
unsigned:即无符号数,可使基本数据类型从0表示到正数,整数的范围将扩大。
三、复杂类型
struct:即结构体类型,一个结构体可以包含多个数据类型,常用于表示一类事物。
union:即共用体类型,一个共用体中可以包含多个数据类型,但所有变量只占一块空间,一次只能使用一个类型。
enum:即枚举类型,可使枚举常量表示一个整型数字。
sizeof:用法形如函数,其作用是返回一个变量所占空间的字节数。
typedef:可以自定义数据类型名称。
四、存储级别
auto:即自动存储,是内存中代码区申明一块临时的空间。
static:即静态存储,是内存中全局区申明一快半永久的空间。
register:即寄存器存储,是使用寄存器存储一块变量的空间。
extern:用于引用其他作用域中的变量,以使该变量在本作用域中可用。
const:即常类型,其类型的变量或对象的值是不能被修改的。
volatile:确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
注意点:
在C语言中数据类型所占空间没有具体的规定,具体空间由编译器决定,而编译器会限制数据表示范围,即:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型,因此同占四个字节的long和int表示范围不一样。
【程序现场】2-2-2:
#include<stdio.h>
typedef unsigned char uch;
uch ch; //==unsigned char
int main(void)
{printf("void =%d\n",sizeof(void));printf("char =%d\n",sizeof(char));printf("uch =%d\n",sizeof(uch));printf("int =%d\n",sizeof(int));printf("float=%d\n",sizeof(float));printf("double=%d\n",sizeof(double));printf("long long=%d\n",sizeof(long long));printf("long double=%d\n",sizeof(long double));printf("\n");short a; //==auto signed short int a;long b; //==auto signed long int b;return 0;
}