C语言中的数据类型有哪些?

C语言中的数据类型可以分为三大类:基本数据类型派生数据类型用户自定义数据类型。下面详细列出常用和完整的分类(基于C99/C11标准):

1. 基本数据类型(Basic Types)

整数类型(Integer Types)

类型别名占用字节(典型)取值范围(signed为例)
charsigned char1-128 ~ 127
unsigned char10 ~ 255
short intshort2-32768 ~ 32767
unsigned short intunsigned short20 ~ 65535
intsigned int4(32位/64位常见)-2³¹ ~ 2³¹-1
unsigned intunsigned40 ~ 2³²-1
long intlong4 或 8(视平台)至少 -2³¹ ~ 2³¹-1
unsigned long intunsigned long4 或 80 ~ 2³²-1 或更大
long long intlong long8-2⁶³ ~ 2⁶³-1
unsigned long long intunsigned long long80 ~ 2⁶⁴-1

浮点类型(Floating-point Types)

类型占用字节精度(大致)取值范围
float4约6-7位十进制有效数字≈ ±3.4E±38
double8约15-16位十进制有效数字≈ ±1.7E±308
long double8/10/12/16(视编译器)更高精度更大范围(具体取决于实现)

布尔类型(C99引入)

_Bool              // 占用1字节,取值0或1
bool               // 通过 #include <stdbool.h> 使用,更直观

虚空类型(void)

  • 用于函数无返回值、无参数、泛型指针等
void

2. 派生数据类型(Derived Types)

  • 指针(Pointer) 如:int *、char *、void *
  • 数组(Array) 如:int a[10]、char str[20]
  • 结构体(Structure) struct
  • 共用体(Union) union
  • 函数(Function) 函数返回类型实际上也是一种派生类型
  • 枚举(Enumeration) enum

3. 用户自定义类型

  • typedef 声明的类型别名
  typedef unsigned long long ull;
  typedef struct Student { ... } Student;

4. 特殊说明(容易忽略的点)

  • char 到底是有符号还是无符号?取决于编译器实现(GCC在多数平台默认signed char)
  • sizeof(int) 不是固定的,32位系统通常4字节,64位系统也通常4字节(但C标准只保证至少16位)
  • long 在Windows(VS/LP64)是4字节,在Linux 64位(LP64)是8字节
  • _Complex 和 _Imaginary(复数类型,C99引入,几乎没人用)

总结表格(最常用的)

类型关键字典型大小常用格式说明符
字符char1%c
无符号字符unsigned char1%c
短整型short2%hd
无符号短整型unsigned short2%hu
整型int4%d
无符号整型unsigned int4%u
长整型long4/8%ld
无符号长整型unsigned long4/8%lu
长长整型long long8%lld
单精度浮点float4%f
双精度浮点double8%lf
长双精度long double10-16%Lf

这些就是C语言中全部的数据类型了,记住基本类型 + sizeof + 平台差异这几点,基本不会在面试或实际开发中踩坑。

文章已创建 2679

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部