目录
C数据类型简介:
在C语言中,数据类型是用于声明不同类型的变量或者函数的一个广泛系统,它决定了变量存储空间的占用大小,以及如何解释存储的位模式,一般来说包括以下几种:
序号 | 类型 |
1 | 基本类型: 一般是算术类型,例如:整型(int)、字符型(char)、单精度浮点型(float)、双精度浮点型(double) |
2 | 枚举类型: 一般是算术类型,被用来定义在程序中只能赋予其一定的离散整数的变量 |
3 | void类型: 表示没有值的数据类型,常用于函数返回值 |
4 | 派生类型: 一般有数组、指针和结构体等类型 |
整数类型
表格中列出了关于标准整数类型的存储大小和范围值的细节:
类型 | 存储大小 | 表示范围 |
int | 2或4字节 | -32,768~32,767或-2,147,483,648~2,147,483,647 |
usigned int | 2或4字节 | 0~65,535或0~4,294,967,295 |
char | 1字节 | -128~127或0~255 |
signed char | 1字节 | -128~127 |
usigned char | 2或4字节 | 0~255 |
short | 2字节 | -32,768~21,767 |
usigned short | 2字节 | 0~65,535 |
long | 4字节 | -2,147,483,648~2,147,483,647 |
usigned long | 4字节 | 0~4,28 |
下面用代码来表示数据类型的字节数大小以及范围:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <limits.h>
int main()
{
printf("字节数 范 围\n\n");
printf(" %d %d到%d\n",(int)sizeof(int), INT_MIN, INT_MAX);
printf(" %d 0到%u\n",(int)sizeof(unsigned int), UINT_MAX);
printf(" %d %d到%d\n",(int)sizeof(char), CHAR_MIN, CHAR_MAX);
printf(" %d %d到%d\n",(int)sizeof(signed char), SCHAR_MIN, SCHAR_MAX);
printf(" %d 0到%d\n",(int)sizeof(unsigned char), UCHAR_MAX);
printf(" %d %hd到%hd\n",(int)sizeof(short), SHRT_MIN, SHRT_MAX);
printf(" %d 0到%u\n",(int)sizeof(unsigned short), USHRT_MAX);
printf(" %d %d到%ld\n",(int)sizeof(long), LONG_MIN, LONG_MAX);
printf(" %d 0到%lu\n",(int)sizeof(unsigned long), ULONG_MAX);
printf("\n");
return 0;
}
运行结果如图:
浮点类型:
表格中列出了关于标准浮点类型的存储大小和范围值的细节:
类型 | 存储值大小 | 表示范围 | 精度 |
float | 4字节 | 1.2E-38~3.4E+38 | 6位有效数字 |
double | 8字节 | 2.3E-308~1.7E+308 | 15位有效数字 |
long double | 16字节 | 3.4E-4932~1.1E+4932 | 19位有效数字 |
下面用代码来表示数据类型的字节数大小以及范围:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <conio.h>
#include <limits.h>
#include <float.h>
int main()
{
printf("字节数 范 围\n\n");
printf(" %d %e到%e\n",(int)sizeof(float),FLT_MIN,FLT_MAX);
printf(" %d %e到%e\n",(int)sizeof(double),DBL_MIN,DBL_MAX);
printf(" %d %le到%le\n",(int)sizeof(long double),LDBL_MIN,LDBL_MAX);
printf("\n");
return 0;
}
运行结果如图(由于编译器的不同会导致结果有差异,小编用的是 VS 2022 ):
注意:各类型的存储大小与系统位数有关系,目前以64位为主,一下是64与32位系统区别:
void类型:
此类型小编整理了三种情况:
序号 | 类型与描述 |
1 | 函数返回为空: c 中有各种函数都没有返回值,或者说它们返回空。不返回值的函数的返回类型为空。例如:void exit(int num); |
2 | 函数参数为空: c 中有各种函数不接收任何参数,不带参数的函数可以接收一个 void ,例如:int rand(void); |
3 | 指针指向void: 类型为 void* 的指针代表对象的地址,而不是类型,例如,内存分配函数 void *malloc(size_t size):返回指向 void 的指针,可以转换为任何类型数据类型。 |
类型转换:
类型转换是将一个数据类型的值转换为另一种数据类型的值。
C 语言中有两种类型转换:
-
隐式类型转换:隐式类型转换是在表达式中自动发生的,无需进行任何明确的指令或函数调用。它通常是将一种较小的类型自动转换为较大的类型,例如,将 int 类型转换为 long 类型或 float 类型转换为 double 类型。隐式类型转换也可能会导致数据精度丢失或数据截断。
-
显式类型转换:显式类型转换需要使用强制类型转换运算符(type casting operator),它可以将一个数据类型的值强制转换为另一种数据类型的值。强制类型转换可以使程序员在必要时对数据类型进行更精确的控制,但也可能会导致数据丢失或截断。
隐式转换实例:
int num1 = 3;
float num2 = 5.21;
double sum = num1 + num2; //隐式将int类型转换为double类型
printf("%lf\n", sum);
输出结果为:
显式类型转换:
double num = 3.14159;
int sum = (int)num;
printf("%d\n", sum); //显式将double类型转换为int类型
输出结果为:
各位小伙伴多多指教!😃 😃 😃