亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 语言数据类型完全指南:整型、浮点型、void 与派生类型

C 语言数据类型是用于声明不同类型变量或函数的庞大系统。变量类型决定其占用存储空间大小及位模式解释方式。

C 语言类型可分类如下:

序号类型及描述
1

基本类型

属于算术类型,进一步分为:(a) 整数类型 (b) 浮点类型。

2

枚举类型

也是算术类型,用于定义只能在程序中赋特定离散整数值的变量。

3

void 类型

类型说明符 void 表示无可用值。

4

派生类型

包括 (a) 指针类型 (b) 数组类型 (c) 结构类型 (d) 共用体类型 (e) 函数类型。

数组类型和结构类型统称聚合类型。函数类型指定函数返回值类型。下节介绍基本类型,其他类型后续章节覆盖。

整数类型

下表提供标准整数类型的存储大小和取值范围详情:

类型存储大小取值范围
char1 字节-128 到 127 或 0 到 255
unsigned char1 字节0 到 255
signed char1 字节-128 到 127
int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int2 或 4 字节0 到 65,535 或 0 到 4,294,967,295
short2 字节-32,768 到 32,767
unsigned short2 字节0 到 65,535
long8 字节(32 位系统 4 字节)-9223372036854775808 到 9223372036854775807
unsigned long8 字节0 到 18446744073709551615

要获取特定平台上类型或变量的确切大小,可使用 sizeof 运算符。表达式 sizeof(type) 产生对象或类型的存储大小(字节)。下例使用 limits.h 头文件中定义的不同常量获取机器上各类型大小:

在线演示
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
    printf("CHAR_BIT : %d\n", CHAR_BIT);
    printf("CHAR_MAX : %d\n", CHAR_MAX);
    printf("CHAR_MIN : %d\n", CHAR_MIN);
    printf("INT_MAX : %d\n", INT_MAX);
    printf("INT_MIN : %d\n", INT_MIN);
    printf("LONG_MAX : %ld\n", (long) LONG_MAX);
    printf("LONG_MIN : %ld\n", (long) LONG_MIN);
    printf("SCHAR_MAX : %d\n", SCHAR_MAX);
    printf("SCHAR_MIN : %d\n", SCHAR_MIN);
    printf("SHRT_MAX : %d\n", SHRT_MAX);
    printf("SHRT_MIN : %d\n", SHRT_MIN);
    printf("UCHAR_MAX : %d\n", UCHAR_MAX);
    printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX);
    printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
    printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
    return 0;
}

编译执行上述程序,在 Linux 上产生以下结果:

CHAR_BIT : 8
CHAR_MAX : 127
CHAR_MIN : -128
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_MAX : 9223372036854775807
LONG_MIN : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535

浮点类型

下表提供标准浮点类型的存储大小、取值范围及精度详情:

类型存储大小取值范围精度
float4 字节1.2E-38 到 3.4E+386 位小数
double8 字节2.3E-308 到 1.7E+30815 位小数
long double10 字节3.4E-4932 到 1.1E+493219 位小数

头文件 float.h 定义宏允许在程序中使用这些值及二进制实数表示的其他细节。下例打印 float 类型占用存储空间及范围值:

在线演示
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
    printf("float 存储大小 : %d \n", sizeof(float));
    printf("FLT_MAX : %g\n", (float) FLT_MAX);
    printf("FLT_MIN : %g\n", (float) FLT_MIN);
    printf("-FLT_MAX : %g\n", (float) -FLT_MAX);
    printf("-FLT_MIN : %g\n", (float) -FLT_MIN);
    printf("DBL_MAX : %g\n", (double) DBL_MAX);
    printf("DBL_MIN : %g\n", (double) DBL_MIN);
    printf("-DBL_MAX : %g\n", (double) -DBL_MAX);
    printf("精度值: %d\n", FLT_DIG );
    return 0;
}

编译执行上述程序,在 Linux 上产生以下结果:

float 存储大小 : 4
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
-FLT_MAX : -3.40282e+38
-FLT_MIN : -1.17549e-38
DBL_MAX : 1.79769e+308
DBL_MIN : 2.22507e-308
-DBL_MAX : -1.79769e+308
精度值: 6

void 类型

void 类型指定无可用值。用于三种情况:

序号类型及描述
1

函数返回 void

C 中有许多函数不返回值,即返回 void。无返回值函数的返回类型为 void。例如 void exit(int status);

2

函数参数为 void

C 中有许多函数不接受参数。无参函数可接受 void。例如 int rand(void);

3

void 指针

类型为 void * 的指针表示对象地址,但不表示其类型。例如内存分配函数 void *malloc(size_t size); 返回 void 指针,可转换为任意数据类型。

C语言

  1. 理解电气开关:类型、功能与应用
  2. 五大数据中心模型详解:设计架构、适用场景与典型案例
  3. 2021年云计算八大核心模型全解析:服务模式与部署模式
  4. 8大常见数据泄露类型实战剖析:真实案例、影响深度与防御启示
  5. 精通C#变量与基础数据类型:完整指南
  6. 深入理解 C++ 数据类型:基础类型、修饰符与最佳实践
  7. C 语言数据类型详解:int、float、char 等核心类型完全指南
  8. C 语言变量、数据类型与常量实战指南
  9. C++数据抽象实战:接口与实现分离的设计艺术
  10. C++数据封装:守护代码安全的核心机制
  11. 精通Python数据类型:实战指南
  12. Java 基本数据类型:8 大类型完整指南与示例