当前位置: 首页 > news >正文

C语言数据类型与常量变量

C语言数据类型与常量变量:构建程序的基础材料

一、数据类型概述

C语言是一种强类型语言,这意味着所有的数据都必须具有某种数据类型,并且在使用前必须先声明。C语言提供了丰富的数据类型,可以分为以下几大类:

类别说明
基本数据类型整型、浮点型、字符型
构造数据类型数组、结构体、共用体
指针类型用于存储内存地址
空类型void类型

本章我们将详细介绍整型、浮点型和字符型这三种基本数据类型。

二、整型数据类型

2.1 整型的分类

C语言的整型可以分为有符号型无符号型两大类:

有符号型说明无符号型说明
int基本整型unsigned int无符号基本整型
short (int)短整型unsigned short (int)无符号短整型
long (int)长整型unsigned long (int)无符号长整型
long long (int)长长整型unsigned long long (int)无符号长长整型

2.2 有符号数与无符号数的区别

对于有符号数,存储单元的最高位用来存储符号:0表示正数,1表示负数。对于无符号数,存储单元的全部二进制位都用来表示数值,不包含符号位。

重要区别

// 有符号整型,可以存储负数inta=-10;shortb=-5;longc=1000;// 无符号整型,只能存储非负数unsignedintd=10;unsignedshorte=5;

在默认情况下,整型是有符号的。如果要表示无符号整型,需要显式地加上unsigned关键字。

2.3 整型数据的大小与范围

整型类型所占的空间和范围并不是固定的,在不同的软硬件平台和编译系统中可能有所不同。以典型的32位系统为例:

类型大小取值范围
int4字节-2147483648 ~ 2147483647
unsigned int4字节0 ~ 4294967295
long4字节与int相同(Windows)或更大(Linux)
long long8字节约±9.2×10^18

2.4 sizeof运算符

sizeof是C语言中的一个重要运算符,用于计算数据类型或变量所占用的字节数。需要特别注意:sizeof不是函数,而是一个单目运算符

#include<stdio.h>intmain(){printf("int占 %zu 字节\n",sizeof(int));printf("long占 %zu 字节\n",sizeof(long));printf("short占 %zu 字节\n",sizeof(short));printf("char占 %zu 字节\n",sizeof(char));inta;printf("变量a占 %zu 字节\n",sizeof(a));return0;}

sizeof的特性

  1. 它是一个运算符,不是函数
  2. 可以作用于数据类型(如sizeof(int)),也可以作用于变量(如sizeof(a)
  3. 在编译时确定结果,而不是运行时
  4. 返回值类型是size_t(无符号整型),使用%zu格式输出

2.5 整型常量

整型常量就是我们在代码中直接写的整数,如08848-100等。C语言允许使用不同的进制表示整型常量:

inta=100;// 十进制intb=0144;// 八进制(以0开头)intc=0x64;// 十六进制(以0x或0X开头)intd=0b1100100;// 二进制(C99标准支持,以0b开头)

2.6 原码、反码与补码

计算机中整数是用补码形式存储的。理解原码、反码和补码对于理解整数的表示至关重要。

原码

原码是最直接的表示方法:最高位为符号位(0表示正,1表示负),其余位表示数值的二进制表示。

例如,+5的原码是00000101,-5的原码是10000101

反码

正数的反码与原码相同。负数的反码是符号位不变,其余各位取反。

例如,-5的反码是11111010

补码

正数的补码与原码相同。负数的补码是反码加1。

例如,-5的补码是11111011

为什么使用补码?

补码的最大好处是可以统一处理加法和减法。用加法器就可以实现减法,极大地简化了CPU的设计。

2.7 整数的二进制表示

以4位二进制数为例:

十进制原码反码补码
+5010101010101
-5110110101011
+0000000000000
-0100011110000

注意:0的补码是唯一的,这就是为什么补码能比原码和反码多表示一个数。

三、浮点型数据类型

3.1 浮点型的分类

C语言提供三种浮点类型:

类型说明典型精度
float单精度浮点型约6-7位有效数字
double双精度浮点型约15-16位有效数字
long double扩展精度浮点型更高精度

3.2 浮点型常量

浮点型常量有两种表示形式:

十进制形式
3.14// 普通十进制0.99// 可以写成.990.0// 整数部分为0时可以省略
指数形式(科学计数法)
9.63406e6// 表示 9.63406 × 10^61.5E-3// 表示 1.5 × 10^-3

注意:字母E(或e)前面必须是浮点数,E后面必须是整数。

3.3 浮点数的内部表示

浮点数在计算机中按照IEEE 754标准存储。以float为例,分为三个部分:

  • 符号位(1位):0表示正数,1表示数
  • 指数位(8位):存储偏移后的指数
  • 尾数位(23位):存储有效数字

这种表示方法使得浮点数可以表示很大或很小的数值,但精度是有限的。

3.4 浮点数比较的注意事项

由于浮点数的精度问题,直接使用==比较两个浮点数是否相等是不安全的:

// 错误的比较方式if(a==3.14)// 可能永远为假// 正确的比较方式:设置一个误差范围if(fabs(a-3.14)<0.0001)// fabs是求绝对值的函数

四、字符型数据类型

4.1 字符型的本质

在C语言中,char类型实际上是一种整数类型,用于存储单个字符。字符在内存中存储的是其ASCII码值。

charc='A';// 存储的是65chard=97;// 与 char d = 'a' 等价

4.2 重要的ASCII码

字符ASCII码
‘\0’(空字符)0
‘0’(数字0)48
‘A’65
‘Z’90
‘a’97
‘z’122

4.3 转义字符

有些字符无法直接表示,需要使用转义序列:

转义字符含义
\n换行
\t制表符
\r回车
\反斜杠
\’单引号
\"双引号
\0空字符

五、常量与变量

5.1 常量

常量是程序执行过程中值不改变的量。C语言中有多种常量:

整型常量
100,-50,0// 十进制0144// 八进制0x64// 十六进制
浮点型常量
3.14,-2.5,1.0e-5
字符常量
'A','0','\n'
字符串常量
"Hello, World!","C Language"

注意:字符常量用单引号,字符串常量用双引号。

符号常量

使用#define定义的常量称为符号常量:

#definePI3.14159#defineMAX_SIZE100// 使用时直接使用名字floatarea=PI*r*r;

符号常量在预处理阶段会被替换为对应的值。

5.2 变量

变量是存储数据的容器,其值可以在程序执行过程中改变。

变量定义
intage;// 定义一个整型变量floatscore;// 定义一个单精度浮点变量chargrade;// 定义一个字符变量doublesalary;// 定义一个双精度浮点变量
变量初始化

变量定义时最好进行初始化:

inta=10;// 定义并初始化floatb=3.14;charc='A';
变量命名规则
  1. 只能由字母、数字和下划线组成
  2. 第一个字符不能是数字
  3. 不能使用C语言的保留字
  4. 区分大小写
  5. 变量名中不能有空格

良好的命名习惯

// 推荐:使用有意义的名称intstudentAge;floataverageScore;charuserName[20];inttotalCount;// 避免:过于简单或无意义的名称inta,b,c;intx1,x2;

六、本章小结

本章我们详细介绍了C语言的基本数据类型:

  1. 整型:包括int、short、long、long long,以及对应的无符号类型
  2. 浮点型:包括float、double、long double,注意精度问题
  3. 字符型:char类型,本质是整数类型
  4. 常量与变量:学会了如何定义和使用常量与变量

这些数据类型是C语言的基础,在后续的章节中,我们将学习如何运用这些数据类型进行更复杂的运算和程序设计。


下一章预告:我们将学习C语言的运算符与表达式,这是进行计算和控制程序流程的基础。

http://www.jsqmd.com/news/453721/

相关文章:

  • 计算机三级备考(六)——数据库及数据库对象
  • 明控创能MKC3568开发板研究手记——为无资料支持的板子适配Linux主线内核(Arm飞牛)
  • LobsterAI(有道龙虾)新版接入企业微信及QQ机器人
  • 计算机毕业设计源码:超市营收数据可视化分析平台全流程构建 Flask框架 可视化 超市 商品 数据分析 大数据 大模型 AI deepseek agent 模型训练 算法优化(建议收藏)✅
  • (103页PPT)IBMmairui集成供应链优化业务变革咨询方案建议书(附下载方式)
  • 熊猫AI助理,助力运维,智能护航
  • 从新手到高手:我用秦岳ai pod工具实现效率翻倍的真实经历
  • 英文版Linux系统的安装
  • 二.三C语言的组成【C语言的组成】
  • 超好玩的长沙歌舞酒吧
  • 在surface上做V1V2V3视觉皮层的拓扑映射并将surface转换成体素
  • 帛书《周易》“困”象不是《易经》“困”卦
  • MySQL 中存储引擎、数据字典、表空间、数据文件、日志的概念与作用
  • OpenClaw大龙虾:2026年最炸裂开源项目,普通打工人也能轻松玩转,效率翻倍!
  • 【架构】Server-Survival,扮演云架构师的塔防游戏,生存策略
  • 红日靶场1渗透
  • 2026年净化板厂家实力推荐榜:手工/机制/岩棉/玻镁岩棉净化板,精选优质品牌与技术创新深度解析 - 品牌企业推荐师(官方)
  • 关于验证码生成的接口实例
  • 国产烟尘测试仪知名企业盘点,4家优质厂家榜单,附评分推荐 - 品牌推荐大师1
  • ASM路由配置
  • 5K臻出彩,双模新体验!飞利浦5K双模商用显示器34B2U5900C重磅来袭
  • 2026年香港靠谱的清水楼装修专业公司推荐,解决客户装修核心痛点 - 工业品网
  • 初识C语言
  • 2026年推荐一下性价比高的AI搜索优化公司靠谱吗 - 工业设备
  • 2026盐城环保机械哪家口碑好,百利豪机械创新能力怎么样产品全吗 - myqiye
  • ##ASM路由配置
  • 解读2026年口碑好的建筑装饰培训机构,贵阳地区推荐哪家 - 工业品牌热点
  • 【2026年最新600套毕设项目分享】springboot基于线性回归的音乐推荐系统(14090)
  • 实测3种携程任我行卡回收方法,安心又省心 - 京回收小程序
  • LangChain 多智能体 (Multi-Agent) 完整文档分析