c语言中的数据类型有很多,大致分为“基本类型”,“构造类型”,“指针类型”,“空类型”
这次我们主要讲基本类型
整型(整数类型)用于存储整数数值,根据长度(占用字节数)和符号性(是否能表示负数)分为多种类型。不同类型的核心区别在于表示范围(能存储的整数大小范围),这由其占用的二进制位数和符号性决定。而整型又分为有符号整型和无符号整型,本质上是为了适应不同的数据场景
这里需要一个相应的头文件<limits.h>,专门用于整数类型,而头文件定义了宏常量,来表示不同符号类型的最大值和最小值,不同类型的宏常量在代码中展示(宏常量均为大写!!!)
1.signed short int(短整型)
简写形式:short 或 signed short(signed 和 int 均可省略),占位符"%hd"。
2. signed int(基本整型)
3. signed long int(长整型)
4. signed long long int(超长整型)
用途:存储极大的正负整数(如大整数运算、毫秒级时间戳等超过 int 范围的场景)。
#include <stdio.h>
#include <limits.h>
int main()
{
printf(" short %d %d\n", SHRT_MIN, SHRT_MAX);
printf(" int %d %d\n", INT_MIN, INT_MAX);
printf(" long %ld %ld\n", LONG_MIN, LONG_MAX);
printf(" long long %lld %lld\n", LLONG_MIN, LLONG_MAX);
return 0;
}
1. unsigned short int(无符号短整型)
2. unsigned int(无符号基本整型)
3. unsigned long int(无符号长整型)
4. unsigned long long int(无符号超长整型)
#include <stdio.h>
#include <limits.h>
int main()
{
printf("unsigned short 0 %u\n", USHRT_MAX);
printf("unsigned int 0 %u\n", UINT_MAX);
printf("unsigned long 0 %lu\n", ULONG_MAX);
printf("unsigned long long 0 %llu\n", ULLONG_MAX);
return 0;
}
浮点型(Floating-Point Types) 用于存储带小数部分的数值(如 3.14、-0.001、100.5 等),也可表示极大或极小的整数(超出整型范围的数,如 1e30)。与整型不同,浮点型的核心特点是能表示小数,但精度有限(无法精确表示所有实数)。浮点型分为单精度浮点型、双精度浮点型和扩展精度浮点型,(最常用的是单精度和双精度)
需要有对应的头文件<float.h>和宏常量
float(单精度浮点型)的核心特性:占位符"%f"
#include <stdio.h>
#include <float.h>
int main()
{
printf("float: 最小正值:%e,最大值:%e\n", FLT_MIN, FLT_MAX);
return 0;
}
double(双精度浮点型)的核心特性:占位符"%lf"
#include <stdio.h>
#include <float.h>
int main()
{
printf("double: 最小正值:%e,最大值:%e\n", DBL_MIN, DBL_MAX);
return 0;
}
long double(扩展精度浮点型)的核心特性:占位符"%lf"
无论长度如何,其结构仍遵循 “符号位 + 指数位 + 尾数位” 的科学计数法逻辑,仅位数比 double 更多(尤其是尾数位,直接影响精度)。
#include <stdio.h>
#include <float.h>
int main()
{
printf("long double: 最小正值:%Le,最大值:%Le\n", LDBL_MIN, LDBL_MAX);
return 0;
}
在浮点型数据类型中,我们可以自定义数据的小数位数和整体最小位数

不管是单精度还是双精度,我们在%后面加上".n"表示小数位数为n位,在"%d"中间有n的时候,表示最低位数,比如"%4d"就是最低位数为4个,若输入的数字超出设置的位数大小,就原样输出,若输入的数字个数少于设置的最小位数时,就在左边补空格

当我们占位符是"%5.2f"或"%5.2lf",表示总共最低位数为5个数,小数为2个数且后一位小数会四舍五入,若总体字符数超出设置的最低字符数个数就在左边补空格,若输入的小数位数超出设置的小数位数,就在左边补0

字符型(Character Types) 本质上是一种特殊的1 字节整型(通常占用 8 位),主要用于存储字符(如字母、数字、符号等),但也可以表示整数(范围由符号性决定)
char(基本字符型)占位符"%c"
表示范围:

最后一个初始化为65,为什么会输出字符A,因为占位符给的是%c,就要输出一个字符,而65所对应的ascll字符为大写字母A
signed char,占位符"%c"
全称:带符号字符型(Signed Character Type)。
长度:1 字节(8 位),与char相同。
符号性:明确带符号(有符号位),最高位为符号位(0 表示非负,1 表示负)。
表示范围:-128 ~ 127(计算方式:\(-2^7\) ~ \(2^7 - 1\))。
#include <stdio.h>
#include <limits.h>
int main()
{
printf("signed char 0 %u\n", UCHAR_MAX);
return 0;
}
unsigned char,占位符"%c"
全称:无符号字符型(Unsigned Character Type)。
长度:1 字节(8 位),与char、signed char相同。
符号性:无符号(无符号位,所有 8 位均用于表示数值)。
表示范围:0 ~ 255(计算方式:0 ~ \(2^8 - 1\))。
#include <stdio.h>
#include <limits.h>
int main()
{
printf("unsigned char 0 %u\n", UCHAR_MAX);
return 0;
}