c语言作为一门面向过程的系统编程语言,并不区分“原始类型”与“对象类型”,因此没有java等面向对象语言中定义的primitive types概念;其所有数据类型均为基本内置类型,设计目标是跨平台效率而非统一尺寸。
在Java等面向对象语言中,“primitive types”(如 int、boolean、char)是为区别于引用类型(如 Integer、String)而提出的语义分类——它们不继承自任何类、不具有方法、直接存储值且由JVM严格规定大小(例如 int 恒为32位)。但C语言根本不存在这种二元划分的基础:它没有类、没有对象、没有自动装箱/拆箱机制,也没有运行时类型系统。 因此,谈论C中的“primitive types”属于概念误植。
C标准(ISO/IEC 9899)仅定义了 “basic types”(基本类型) 和派生类型(如数组、结构体、指针、联合体、函数类型等)。其中基本类型包括:
-
整数类型(integer types):
- 有符号:signed char、short int、int、long int、long long int
- 无符号:unsigned char、unsigned short int、unsigned int、unsigned long int、unsigned long long int
- 注意:char 单独存在,其符号性由实现定义(可等价于 signed char 或 unsigned char);bool 并非原生类型,而是 中通过宏 #define bool _Bool 引入的别名,_Bool 才是C99引入的标准基本类型。
-
实浮点类型(real floating types):
float、double、long double立即学习“C语言免费学习笔记(深入)”;
-
空类型(void type):
void —— 表示“无类型”,用于函数返回值、指针泛型等场景,不可用于变量声明(除非作为指针基类型,如 void*)。