C 语言数据类型用于声明不同类型的变量或函数的一个广泛系统,变量的类型决定了变量存储占用空间
C 语言的几种数据类型
基本数据类型:算术类型,整型 int 、字符型 char 、浮点型 float 、双精度浮点型 double
枚举类型:也是算术类型用来定义程序中只能赋予其一定的离散数值的变量
void 类型:void 表示没有值的数据类型,通常用于函数返回值
派生类型:数组类型、指针类型和结构体类型
整数类型
%lu 为 32 位无符号整数
#include <stdio.h>
#include <limits.h>
int main()
{
printf("int 存储大小 : %lu \n", sizeof(int));
return 0;
}浮点数
%E 为以指数形式输出单、双精度实数
#include <stdio.h>
#include <float.h>
int main()
{
printf("float 存储最大字节数 : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}void 类型
void 类型指定没有可用的值。
类型转换
类型转换是将一个数据类型的值转换为另一种数据类型的值。
C 语言中有两种类型转换:
隐式类型转换:隐式类型转换是在表达式中自动发生的,无需进行任何明确的指令或函数调用。它通常是将一种较小的类型自动转换为较大的类型,例如,将int类型转换为long类型或float类型转换为double类型。隐式类型转换也可能会导致数据精度丢失或数据截断。
显式类型转换:显式类型转换需要使用强制类型转换运算符(type casting operator),它可以将一个数据类型的值强制转换为另一种数据类型的值。强制类型转换可以使程序员在必要时对数据类型进行更精确的控制,但也可能会导致数据丢失或截断。
int i = 10;
float f = 3.14;
double d = i + f; // 隐式将int类型转换为double类型double d = 3.14159;
int i = (int)d; // 显式将double类型转换为int类型整数:
char、short、int、long、long long
浮点数:
float、double、long double
逻辑
bool
指针
自定义类型
类型有什么不同?
类型名称:int、long、double
输入输出时的格式化:%d、%ld、%if
所表达的数范围:char < short < int < float < double
内存中所占据的大小:1个字节到16个字节
内存中的表达形式:整数是二进制数(补码)、而浮点数是编码
sizeof
是一个运算符,给出某个类型或者变量在内存所占用的字节数
sizeof(int)
sizeof(i)
#include <stdio.h>
int main()
{
printf("sizeof(char)=%ld\n",sizeof(char));
printf("sizeof(short)=%ld\n",sizeof(short));
printf("sizeof(int)=%ld\n",sizeof(int));
printf("sizeof(long)=%ld\n",sizeof(long));
printf("sizeof(long long)=%ld\n",sizeof(long long));
return 0;
}
sizeof(char)=1
sizeof(short)=2
sizeof(int)=4
sizeof(long)=4
sizeof(long long)=8