C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


C 扩展类型

更多数据类型

除了基本类型(int、float、double、char)之外,C 语言还提供了扩展关键字(short、long、unsigned)来控制数字的大小,以及它是否为负数:

更精确。
类型 大小* 范围(通常) 格式说明符
short int 2 字节 -32,768 至 32,767 %hd
unsigned int 2 或 4 字节 0 到 65,535(2 字节)
0 到 4,294,967,295(4 字节)
%u
long int 4 或 8 字节 -2,147,483,648 至 2,147,483,647(4 字节)
-9,223,372,036,854,775,808 至 9,223,372,036,854,775,807(8 字节)
%ld
long long int 8 字节 -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 %lld
unsigned long int 4 或 8 字节 0 到 4,294,967,295(4 字节)
0 到 18,446,744,073,709,551,615(8 字节)
%lu
unsigned long long int 8 字节 0 到 18,446,744,073,709,551,615 %llu
long double 8、12 或 16 字节 具体实现取决于具体情况,但比 double%Lf

unsigned 表示该类型只能存储非负值(0 及以上)。

注意: 这些类型的大小在不同系统之间可能有所不同(例如,2 字节或 4 字节,或 4 字节或 8 字节),具体取决于计算机的型号(旧或新)、32 位或 64 位以及所使用的编译器。

以下示例展示了如何创建和打印这些扩展类型:

示例

int normalInt = 1000;                       // standard int 
double normalDouble = 3.14;                 // standard double

short int small = -100;                     // smaller int
unsigned int count = 25;                    // only positive int
long int big = 1234567890;                  // larger int
long long int veryBig = 9223372036854775807; // very large int
unsigned long long int huge = 18446744073709551615U; // very large, only positive
long double precise = 3.141592653589793238L; // extended precision

printf("Normal int: %d
", normalInt);
printf("Normal double: %lf
", normalDouble);
printf("Small: %hd
", small);
printf("Count: %u
", count);
printf("Big: %ld
", big);
printf("Very Big: %lld
", veryBig);
printf("Huge: %llu
", huge);
printf("Precise: %Lf
", precise);

亲自试一试 »

注意:这些扩展类型主要用于需要对内存使用或数值范围进行非常精确控制的情况。

注意:对于日常编程,int、float、double 和 char 通常就足够了。


检查大小

*具体大小取决于您的系统和编译器。 请记住,您可以使用 sizeof 运算符来检查大小:

示例

printf("Size of int: %zu bytes
", sizeof(int));
printf("Size of double: %zu bytes
", sizeof(double));
printf("Size of short int: %zu bytes
", sizeof(short int));
printf("Size of unsigned int: %zu bytes
", sizeof(unsigned int));
printf("Size of long int: %zu bytes
", sizeof(long int));
printf("Size of long long int: %zu bytes
", sizeof(long long int));
printf("Size of unsigned long long int: %zu bytes
", sizeof(unsigned long long int));
printf("Size of long double: %zu bytes
", sizeof(long double));

亲自试一试 »

提示: 当您需要精确控制数字的大小时,可以使用固定宽度类型,我们稍后会学习到。

本页旨在向您展示 C 语言还有其他扩展类型,但目前在本教程中,我们将继续专注于基本类型(int、float、double、char)。