数据类型介绍
字符类型:
char:字符类型,用于表示单个字符,例如字母、数字或特殊符号。
整数类型:
short:短整型,通常占用2个字节,用于表示整数值。
int:整型,通常占用4个字节,用于表示整数值。在大多数情况下,我们使用int来表示整数。
long:长整型(省略了int),通常占用4或8个字节,用于表示较大范围的整数值。
long long:更长的整型(省略了int),通常占用8个字节或更多,用于表示非常大的整数值。
浮点数类型:
float:单精度浮点数,通常占用4个字节,用于表示带有小数部分的数值。精度约为6-7位小数。
double:双精度浮点数,通常占用8个字节,用于表示更高精度的带有小数部分的数值。精度约为15位小数。
不同的数据类型有不同的取值范围和占用空间大小,选择合适的数据类型可以提高程序的效率和节省内存空间。此外,正确选择数据类型还可以确保数据的有效性和准确性,并避免数据溢出或损失精度的问题。
类型的基本归类
在C语言中,signed和unsigned是用来修饰整数类型的关键字。
signed(有符号的):表示有符号的整数类型。默认情况下,如果不明确指定数据类型的符号修饰符,则会被视为signed类型。signed类型可以表示正数、负数和零。
unsigned(无符号的):表示无符号的整数类型。使用unsigned修饰的整数类型只能表示非负数(包括零),不能表示负数。
例如:
char 是 1个字节的空间 ,又等于 8个bit位,
通过使用signed或unsigned关键字,可以明确地指定整数类型的符号属性,以满足特定的需求。
整形家族:
char:字符在内存中存储的是字符的ASCII码值,ASCII码值是整型所以字符类型归类到整型家族。
unsigned char:unsigned char
是C语言中的一种无符号字符类型,用于表示无符号的8位(1字节)整数值。它可以表示范围在 0 到 255(2^8-1)之间的非负整数。使用 unsigned char
可以存储不需要负数表示的字符数据或者表示不超过 255 的整数值。
例如:
unsigned char ch = 'A'; // 存储字符 'A'
unsigned char value = 200; // 存储整数值 200
需要注意的是,unsigned char
类型只能表示非负整数,它没有用于表示负数的范围。当使用 unsigned char
时,应确保所存储的数值不会超出其有效范围,否则可能会导致溢出错误。
此外,与 signed char
类型相比,unsigned char
可以提供更大的正数范围,但不能用来表示负数。因此,在选择使用 char
类型时,需要根据具体需求和数值范围来决定使用 signed char
还是 unsigned char
。
signed char:signed char
是C语言中的一种有符号字符类型,用于表示带有符号位的8位(1字节)整数值。它可以表示范围在 -128 到 127 之间的整数。使用 signed char
可以存储需要负数表示的字符数据或者表示在 -128 到 127 范围内的整数值。
例如:
signed char ch = 'A'; // 存储字符 'A'
signed char value = -50; // 存储整数值 -50
需要注意的是,对于有符号类型,最高位的比特位(即符号位)被用于表示正数和负数。因此,signed char
类型可以表示正数、负数和零。
在处理字符数据时,默认情况下,char
类型被视为 signed char
类型。所以当使用 char
类型时,通常可以存储正数、负数和零。如果想明确指定为 signed char
类型,可以显式地使用 signed char
关键字来声明变量。
short(省略掉了int):short
是C语言中的一种有符号短整型,通常占用2个字节(16位)的内存空间。它可以表示范围在 -32,768 到 32,767 之间的整数。使用 short
可以存储需要较小范围的整数值,但比 char
类型更大。
例如:
short num = 100; // 存储整数值 100
short temperature = -20; // 存储整数值 -20
需要注意的是,由于 short
类型的取值范围较小,如果存储的值超过了其有效范围,就可能导致溢出错误。在使用 short
类型时,应确保所存储的数值不会超出其取值范围。
此外,还有无符号的短整型 unsigned short
,它可以表示范围在 0 到 65,535 之间的非负整数。根据具体的需求,可以选择使用有符号的 short
或无符号的 unsigned short
。
unsigned short [int] :unsigned short
是C语言中的一种无符号短整型,通常占用2个字节(16位)的内存空间。它可以表示范围在 0 到 65,535 之间的非负整数。使用 unsigned short
可以存储不需要负数表示的较小范围整数值。
例如:
unsigned short num = 100; // 存储非负整数值 100
unsigned short count = 500; // 存储非负整数值 500
需要注意的是,unsigned short
类型只能表示非负整数,它没有用于表示负数的范围。当使用 unsigned short
时,应确保所存储的数值不会超出其有效范围,否则可能会导致溢出错误。
与有符号的 short
类型相比,unsigned short
可以提供更大的正数范围,但不能用来表示负数。因此,在选择使用 short
类型时,需要根据具体需求和数值范围来决定使用有符号的 short
还是无符号的 unsigned short
。
signed short [int] :signed short
是C语言中的一种有符号短整型,通常占用2个字节(16位)的内存空间。它可以表示范围在 -32,768 到 32,767 之间的整数。使用 signed short
可以存储需要较小范围的有符号整数值。
例如:
signed short num = -100; // 存储整数值 -100
signed short temperature = 50; // 存储整数值 50
需要注意的是,对于有符号类型,最高位的比特位(即符号位)被用于表示正数和负数。因此,signed short
类型可以表示正数、负数和零。
与 unsigned short
类型相比,signed short
可以表示负数,而 unsigned short
只能表示非负整数。因此,在选择使用 short
类型时,需要根据具体需求和数值范围来决定使用有符号的 signed short
还是无符号的 unsigned short
。
int:在C语言中,int
是一种整数类型,用于表示整数值。它通常占用4个字节(32位)的内存空间,根据具体的平台和编译器可能会有所变化。
int
类型可以表示范围在 -2,147,483,648 到 2,147,483,647 之间的整数,包括负数、正数和零。
例如:
int x = 10; // 正数
int y = -5; // 负数
int z = 0; // 零
int
是C语言中最常用的整数类型之一,在大多数情况下都能满足一般的整数计算需求。如果需要处理更大或更小范围的整数,可以考虑使用 long int
或 short int
等其他整数类型。
需要注意的是,对于有符号的 int
类型,默认情况下被视为 signed int
,可以省略 signed
关键字。而无符号的整数类型使用 unsigned int
来表示。
signed int:在C语言中,signed int
是一种有符号的整数类型。signed int
可以表示范围在 -2,147,483,648 到 2,147,483,647(包括边界值)之间的整数。
需要注意的是,在C语言中,int
默认情况下被视为 signed int
,因此可以省略 signed
关键字。以下两种写法是等价的:
int x; // signed int
signed int y; // signed int
如果显式地使用 signed int
来声明变量,它仍然表示有符号的整数类型。
示例:
signed int temperature = -20; // 有符号的整数变量
signed int count = 1000; // 有符号的整数变量
由于 signed int
是默认的整数类型,通常情况下我们不必显式地将其指定为变量的类型。
unsigned int:在C语言中,unsigned int
是一种无符号的整数类型。unsigned int
可以表示范围在 0 到 4,294,967,295(包括边界值)之间的非负整数。
unsigned int
类型可以存储非负整数,而不包含负数。
示例:
unsigned int num = 100; // 无符号的整数变量
unsigned int count = 5000; // 无符号的整数变量
需要注意的是,无符号整数类型 unsigned int
在处理溢出时具有循环特性,即当计算结果超过其表示范围时,会从该范围的另一端重新开始。
与有符号的 int
类型相比,unsigned int
提供了更大的正数范围,但不能用来表示负数。根据所需的数值范围和数据的符号性质,可以选择使用有符号的 int
还是无符号的 unsigned int
。
long [int]:在C语言中,long
是一种长整型,用于表示较大范围的整数值。它通常占用4个字节或8个字节的内存空间,具体取决于编译器和操作系统。
long
:默认情况下,long
被视为有符号的长整型,可以表示范围在 -2,147,483,648 到 2,147,483,647(32位平台)或 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(64位平台)之间的整数。
例如:
long x = 1000000L; // 有符号的长整型变量
需要注意的是,在声明 long
类型时,可以使用 L
后缀将整数常量明确指定为长整型,以防止溢出错误。
如果需要更大范围的整数,可以使用 long long
类型。另外,也可以使用无符号的 unsigned long
和 unsigned long long
来表示非负整数范围。根据具体需求,选择适合的长整型类型来存储整数值。
unsigned long [int]:在C语言中,unsigned long
是一种无符号的长整型,用于表示非负整数值。它通常占用4个字节或8个字节的内存空间,具体取决于编译器和操作系统。
unsigned long
可以表示范围在 0 到 4,294,967,295(32位平台)或 0 到 18,446,744,073,709,551,615(64位平台)之间的非负整数。
例如:
unsigned long num = 1000000UL; // 无符号的长整型变量
需要注意的是,在声明 unsigned long
类型时,可以使用 UL
后缀将整数常量明确指定为无符号长整型。
与有符号的 long
类型相比,unsigned long
提供了更大的正数范围,但不能用来表示负数。根据所需的数值范围和数据的符号性质,选择适合的长整型类型来存储整数值。
signed long [int]:在C语言中,signed long
是一种有符号的长整型,用于表示较大范围的整数值。它通常占用4个字节或8个字节的内存空间,具体取决于编译器和操作系统。
signed long
:默认情况下,long
被视为有符号的长整型,可以表示范围在 -2,147,483,648 到 2,147,483,647(32位平台)或 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(64位平台)之间的整数。
例如:
signed long x = -1000000L; // 有符号的长整型变量
需要注意的是,在声明 signed long
类型时,可以使用 L
后缀将整数常量明确指定为长整型。
与无符号的 unsigned long
类型相比,signed long
可以表示负数和正数范围,而无符号类型只能表示非负整数。根据所需的数值范围和数据的符号性质,选择适合的长整型类型来存储整数值。
注释:
int:
int a = signed int a(默认是有符号的,short和long同理)
unsigned int a(无符号要写明)
char:
char在绝大部分编译器中等于signed char,但也有可能等于unsigned char,C语言标准并没有规定,取决于编译器
char:模棱两可
unsigned char:明确是无符号
signed char:明确是有符号
浮点数家族:
float:float
是C语言中的一种浮点数类型,用于表示单精度浮点数。它通常占用4个字节(32位)的内存空间。使用 float
可以进行一般的浮点数计算,适用于大多数普通的数值运算和科学计算。然而,相对于 double
类型,float
类型提供的精度较低,约为6-7位有效数字。
例如:
float pi = 3.14159265358979f;
float result = sqrtf(2.0f); // 使用 float 计算平方根
需要注意的是,由于浮点数在计算机中的存储方式以及精度限制,float
类型可能会存在舍入误差和精度损失的问题。在某些情况下,特别是需要高精度计算或对精确性要求较高的应用程序中,可能需要使用 double
或其他更高精度的数据类型来处理。
double:double
是C语言中的一种浮点数类型,用于表示双精度浮点数。它通常占用8个字节(64位)的内存空间,相对于 float
类型来说,提供了更高的精度。
使用 double
可以处理大部分常见的浮点数计算,适用于一般的数值运算和科学计算。它可以表示更大范围的数值,并提供约15位的有效数字。
例如:
double pi = 3.141592653589793;
double result = sqrt(2.0); // 使用 double 计算平方根
需要注意的是,由于浮点数在计算机中的存储方式以及精度限制,double
类型可能会存在舍入误差和精度损失的问题。在某些情况下,特别是需要高精度计算或对精确性要求较高的应用程序中,可能需要使用其他更高精度的数据类型或使用特殊的数值计算库来处理。
long double:long double
是C语言中的一种浮点数类型,用于表示更长的双精度浮点数。它通常占用8字节或更多的内存空间,相对于 double
类型来说,提供了更高的精度。
使用 long double
可以处理需要更高精度的浮点数计算,适用于涉及大量小数位数或对精度要求较高的计算场景。
例如:
long double pi = 3.141592653589793238462643383279502884L;
long double result = sqrtl(2.0L); // 使用 long double 计算平方根
需要注意的是,long double
在不同的平台和编译器中的具体大小和精度可能会有所差异。因此,在使用 long double
类型时,建议仔细检查特定平台和编译器的文档以了解其支持的范围和精度。
构造类型(自定义类型):
构造类型是在C语言中用于组合多个数据元素的一种方式,它们包括数组类型、结构体类型、枚举类型和联合类型。
-
数组类型:数组是相同类型的元素按照一定顺序排列的集合。通过指定元素类型和数组长度来定义数组类型。例如,
int numbers[5];
定义了一个包含5个整数元素的整型数组。 -
结构体类型(struct):结构体是不同类型的数据元素按照一定顺序组合在一起的复合数据类型。通过定义结构体模板并实例化结构体变量来定义结构体类型。例如,
struct Person { char name[20]; int age; float height; }; struct Person p1; // 定义了一个名为 p1 的结构体变量
-
枚举类型(enum):枚举类型是用于定义一组命名常量的数据类型。通过定义枚举标识符和枚举常量列表来定义枚举类型。例如,
enum Color { RED, GREEN, BLUE }; enum Color c1; // 定义了一个名为 c1 的枚举变量
-
联合类型(union):联合是一种特殊的数据类型,可以在相同的内存空间中存储不同类型的数据。通过定义联合成员和联合变量来定义联合类型。例如,
union Data { int i; float f; char str[20]; }; union Data d1; // 定义了一个名为 d1 的联合变量
这些构造类型提供了更灵活和复杂的数据结构,可以用于组织和存储不同类型的数据,并提供了方便的访问方式和数据操作功能。
指针类型:
指针类型是C语言中的一种特殊数据类型,用于存储变量的内存地址。通过指针,可以间接地访问和操作内存中的数据。
在C语言中,指针类型的声明使用一个*
符号来表示。以下是几种常见的指针类型示例:
-
int *pi;
:这是一个指向整型数据的指针。它可以用于存储整型变量的内存地址。 -
char *pc;
:这是一个指向字符数据的指针。它可以用于存储字符变量的内存地址。 -
float *pf;
:这是一个指向单精度浮点数数据的指针。它可以用于存储单精度浮点数变量的内存地址。 -
void *pv;
:这是一个指向void
类型(无类型)数据的指针。void
指针可以存储任何类型的数据的地址,但无法直接操作所指向的数据。通常在需要处理不同类型的指针时使用void
指针。
请注意,声明指针类型只是为指针变量分配了内存空间,但尚未初始化。要使指针变量指向有效的内存地址,需要将其赋值为相应变量的地址或者使用动态内存分配函数(如malloc()
)来分配内存。
空类型:
void表示空类型(无类型)
通常应用于函数的返回类型、函数的参数、指针类型
void
是C语言中的一种特殊类型,表示空类型或无类型。它在以下情况下常常被应用:
-
函数返回类型:当函数不需要返回任何值时,可以将其返回类型声明为
void
。例如:void func();
-
函数参数:当函数不接受任何参数时,可以使用
void
来表示没有参数。例如:void func(void);
-
指针类型:
void*
是一种通用的指针类型,可以存储任意类型的地址。这在需要处理未知数据类型的指针时非常有用。但由于void*
本身是无类型的,不能直接访问所指向的数据,需要进行类型转换才能操作。
除此之外,在某些特定的上下文中,void
也可用于其他目的,例如函数指针中的占位符类型、结构体中的空字段等。
需要注意的是,不能声明一个 void
类型的变量,因为它没有具体的大小和存储形式。 void
只能作为函数返回类型、函数参数或指针类型的修饰符来使用。
今天的文章数据类型介绍和类型的基本归类方法_八种基本数据类型分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84834.html