数据类型

简介: 数据类型

简介

C 语言中,数据类型指的是用于声明不同类型的 变量函数 的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。


C 中的类型可分为以下几种:

类型 描述
基本类型 它们是 算术类型 ,包括两种类型: 整数类型浮点类型
枚举类型 它们也是 算术类型 ,被用来定义在程序中只能赋予其一定的 离散整数值 的变量
void 类型 类型说明符 void 表明没有可用的值
派生类型 它们包括: 指针类型数组类型结构类型共用体类型函数类型

数组类型结构类型统称为 聚合类型函数的类型指的是函数返回值的类型


整数类型

类型 存储大小 值范围
char 1 字节 [-128,127][0,255]
unsigned char 1 字节 [0,255]
signed char 1 字节 [-128,127]
int 2 字节或 4 字节 [-32768,32767][-2147483648,2147483647]
unsigned int 2 字节或 4 字节 [0,65535][0,4294967295]
short 2 字节 [-32768,32767]
unsigned short 2 字节 [0,65535]
long 4 字节 [-2147483648,2147483647]
unsigned long 4 字节 [0,4294967295]


注意

各种类型的存储大小与系统位数有关,但目前通用的以 64位 系统为主。


以下列出了 32位 系统与 64位 系统的存储大小的差别( windows 相同):

Compiler Windows vc12 Linux gcc-5.3.1
Target win32 x64 i686 x86_64
char 1 1 1
unsigned char 1 1 1
short 2 2 2
unsigned short 2 2 2
int 4 4 4
unsigned int 4 4 4
long 4 4 8
unsigned long 4 4 8
float 4 4 4
double 8 8 8
long int 4 4 8
long long 8 8 8
long double 8 12 16


为了得到某个类型或某个变量在特定平台上的准确大小, C 语言提供 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。


示例代码:

#include <stdio.h>
#include <limits.h>
int main()
{
   printf("int 存储大小 : %lu \n", sizeof(int));
   return 0;
}点击复制复制失败已复制


Tip

Linux amd64 环境下的输出结果:int 存储大小 : 4


浮点类型

关于 标准浮点类型存储大小值范围精度信息如下表所示:

类型 存储大小 值范围 精度
float 4 字节 [1.2E-38, 3.4E+38] 6 位小数
double 8 字节 [2.3E-308, 1.7E+308] 15 位小数
long double 16 字节 [3.4E-4932, 1.1E+4932] 19 位小数


下面代码用来输出浮点类型占用的存储空间以及它的范围值:

#include <stdio.h>
#include <float.h>
int main()
{
   printf("float 存储最大字节数 : %lu \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );
   return 0;
}点击复制复制失败已复制


Linux amd64 环境下的输出结果:

float 存储最大字节数 : 4 
float 最小值: 1.175494E-38
float 最大值: 3.402823E+38
精度值: 6点击复制复制失败已复制


void 类型

void 类型指定没有可用的值。它通常用于以下三种情况下:


函数返回为空

C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status);


函数参数为空

C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void 。例如 int rand(void);


指针指向 void

类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。

目录
相关文章
|
7天前
|
人工智能 运维 安全
|
5天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
606 21
|
12天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
969 110
|
6天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。