Linux嵌入式学习——数据类型

发布时间:2026/10/29 1:52:04
Linux嵌入式学习——数据类型 目录一、什么是数据类型二、数据类型的分类及其必要性。1数据类型的分类2数据类型的必要性三、进制关键字与标识符常量与变量字节序。1.进制2.关键字与标识符1关键字2标识符标识符的命名规则3.常量与变量4.字节序四、整型1.整型的类型2.整型的常量形式3.整型的变量定义4.整型大小5.整型存储1整型分为正整型和负整型2原码、反码、补码3CPU使用补码存储的原因6.整型数据范围1对于有符号型2对于无符号型7.整型的溢出上溢和下溢五、浮点型1.浮点型的常量表示2.浮点型的变量3.浮点型的大小4.浮点型的存储1IEEE754标准2小数的二进制转换3存储5.浮点型的数值范围6.浮点型的比较精度问题六、字符型1.编码2.字符型的常量表示3.字符型的变量4.字符型的大小5.字符型的存储6.字符型数据的范围7.转义字符七、总结八、修改记录一、什么是数据类型数据类型是编程语言对数据的一种分类规则。它规定了数据在内存中怎么表示占多大内存取值范围能做哪些运算。数据的分类和规格决定存储、范围和运算二、数据类型的分类及其必要性。1数据类型的分类2数据类型的必要性数据类型分类的必要性可以概括为1确定内存表示和大小2确定取值范围3确定合法运算和语义4支持编译期类型检查5支持结构体、指针、数组等复杂构造6保证可移植性和标准一致性7帮助编译器优化和生成代码8支持跨平台通信和数据序列化9提高程序可读性和抽象能力10避免退化成手工字节操作。三、进制关键字与标识符常量与变量字节序。1.进制1进制二进制B、八进制O、十进制D、十六进制H。2进制间的转换---十进制向其他进制转换使用除R取余法R为进制类型。---其他进制向十进制转换使用加权求和法。2.关键字与标识符1关键字关键字是由 C 标准规定预先定义编译器识别有特殊语法含义的保留字用于声明类型、控制流程、定义存储方式等大小写敏感不能用作变量名、函数名等标识符。C语言中的关键字2标识符标识符的命名规则标识符identifier 就是程序员自己起的名字用来表示变量、函数、类型、结构体成员、标签等。标识符的命名规则1只能由字母、数字、下划线组成2不能以数字开头3不能是关键字4区分大小写5不能包含空格、运算符、标点等6不能和预处理命令等二级关键字重名include、struct、union、if、return……7不能和系统库函数重名printf、scanf、sin、cos……库函数8长度限制C 标准保证内部标识符前 63 个字符有效外部标识符前 31 个字符有效。实际使用时建议不要起过长名字。3.常量与变量常量:在程序运行过程中其值不能被改变的量称为常量。变量:在程序运行过程中其值 能被改变的量称为变量。4.字节序字节序Endianness也叫端序、字节顺序指多字节数据在内存中存储时各个字节的排列顺序。小端序高高低低高位数据存放在高地址低位数据存放在低地址。大端序高低高低高位数据存放在低地址低位数据存放在高地址。举例以int类型int a0x12345678小端序。在cpu内存中每个地址存放一个字节。0x12345678可拆分为四个字节其数据位由高到低分别为0x12、0x34、0x56、0x78。依据小端存储的高位数据存放在高地址低位数据存放在低地址。0x12放在高地址0xFF06……0x78放在低地址0xFF03。四、整型1.整型的类型int //整型short //短整型long //长整型long long //长长整型2.整型的常量形式123 //十进制形式0123 //八进制形式0x123 //十六进制形式无后缀的整型常量如果其值能由int表示则类型为int否则会根据进制和大小选择long、long long或相应的无符号类型。加上U、L、LL等后缀后类型由后缀决定。3.整型的变量定义定义变量数据类型 变量名int a //定义一个整型变量a并开辟存储空间int a 10 //初始化一个整型变量a的初始值为104.整型大小空间的大小取决于类型的大小*sizeof sizeof 是一个运算符 --- 用来计算 运算数对应类型的大小(所在内存空间的字节数)sizeof(a)sizeof(int)sizeof(12)四种整型的大小int size 4short size 2long size 8long long size 85.整型存储计算机存储整型数据时存储的是其补码形式。1整型分为正整型和负整型signed//有符号类型有正负符号。字符位最高位 数值位其余位。正整型符号位-----0 0 0011111 31负整型符号位-----1 1 0011111 -31unsigned//无符号类型只有正数。2原码、反码、补码在cpu中如果进行四则运算则会非常复杂存储占用大量内存于是引申出原码反码补码的概念。在CPU中只有加法器。在C语言中整型数据使用补码存储。原码原本数字的二进制表示。反码原本数字的二进制值全部取反若为signed类型则最高位保留。补码在反码的基础上 1。举例int a -123原码1000 0000 0000 0000 0000 0000 1111 1011反码1111 1111 1111 1111 1111 1111 0000 0100补码1111 1111 1111 1111 1111 1111 0000 0101正数的原码、补码、反码是其本身。对补码取补码是原码。3CPU使用补码存储的原因1减法和加法统一只需加法器2符号位参与运算不用单独处理符号3零只有一个表示简化比较和判断4溢出判断简单5有符号和无符号共用加法电路6符合模运算回绕自然7硬件成本最低效率最高。6.整型数据范围1对于有符号型以int举例int数据的大小为四个字节----32个二进制位将最高位作为符号位其余31位作为数值位则有符号int数据的取值范围为[-2^31~2^31-1]同理可得出其他有符号整型数据的取值范围。2对于无符号型[0~2^32-1]7.整型的溢出上溢和下溢当整型数据达到最大值再1时整型值会回到最小值。unsigned short a 65535; a a 1; printf(a %d\n,a);结果为0unsigned short i 0; for (i 0; i 65536; i) { printf( i %d\n,i); }此处i达到65535后1为0使得for循环一直运行变成死循环。输出结果为0-65535的不断循环。五、浮点型1.浮点型的常量表示1.2341.234e3 //e为科学计数法指的是十的指数次方1.234E-3 //同理无后缀的浮点常量类型是double加f或F是float加l或L是long double。2.浮点型的变量定义形式数据类型 变量名float //单精度double //双精度long doublefloat f //定义变量ffloat f 1.234 //初始化数值3.浮点型的大小sizeof(float) 4 字节sizeof(double) 8 字节sizeof(long double) 16 字节4.浮点型的存储1IEEE754标准定义了浮点型的存储结构float 符号位 1位指数位 (阶码位) 8位尾数位 23位double 符号位 1位指数位 (阶码位) 11位尾数位 52位2小数的二进制转换对于十进制形式的小数采用乘二取整法将小数部分*2将整数部分余出小数部分继续*2直到没有小数部分。余出的数从上到下读取即为小数部分的二进制代码。以float f 12.125举例0.125 0.125 * 2 0.25 ... ... 00.25 * 2 0.5 ... ... 00.5 * 2 1.0 ... ... 1小数部分结果0.0013存储将二进制形式的小数写为科学计数法形式12.125的二进制小数形式为1100.0011.100001*2^3。指数位偏移量127其中存储指数位的值需要增加偏移量127。即指数位的值位127 3 130.以IEEE标准存储float1位符号位8位指数位23位尾数位。12.125的结果为0100 0001 0100 0010 0000 0000 0000 00005.浮点型的数值范围以float为例float 符号位 1位指数位 (阶码位) 8位尾数位 23位由于指数位为正负指数存在偏移量127则指数位取值[-127~128]2^(-127)~2^128数值范围尾数位的大小决定其有效数的精准度2^238,388,608对应6~7位有效数。6.浮点型的比较精度问题对于小数0.9进行乘2取整法时存在无限循环部分若进行比较运算没有统一精度会存在问题。浮点型常数的默认类型为double型。float f 0.9; if(f0.9){ printf(yes\n); } else{ printf(no\n); }此时f的默认精度为double双精度输出结果为no。将f类型定义为double型可解决问题。六、字符型1.编码将一个字符存储到计算机时无法存储其本身使用编码将每个字符的存储用一个二进制数值替代。ASCII编码对常用的128个字符进行了编码包括0~32 //不可见字符控制字符48~57 //数字65~90 //大写字母97~122 //小写字母2.字符型的常量表示a //单引号这个数据类型为整型\141 //编码的八进制形式对应的符号a不常用\x61 //编码的十六进制形式对应的符号a不常用3.字符型的变量定义形式数据类型 变量名char c a; //定义一个char类型变量初始化为a。char c 97 //定义一个char类型变量初始化编码值为97按照ASCII编码表对应字符“a”。4.字符型的大小一个字节5.字符型的存储字符型数据存储对应字符编码的二进制整型数据以补码形式存储。6.字符型数据的范围存在signed和unsigned类型signed char [-128~127]unsigned char [0~255]7.转义字符转义字符是 C 语言中由反斜杠\引导的特殊字符序列用来表示无法直接输入或显示的控制字符如换行、制表在语法中有特殊含义的字符如引号、反斜杠用八进制、十六进制或通用字符名表示的任意字符。它必须整体看例如\n是一个字符不是“反斜杠 n”。转义字符是一个字符。举例printf(abc\tij#k\n); printf(ab*c\t*de\rf\tg\n);结果为注意\r将光标移动到最前面如何f覆盖原有的ag覆盖原有的*。七、总结今天学习了基础的数据类型以及相关知识。包括进制转换关键字标识符命名规则常量与变量字节序转义字符等等以及整型浮点型字符型的类型常量、变量定义、类型大小、取值范围、存储方式等等。补充CPU经常用来处理存储整型数据GPU经常用来处理存储浮点型数据。八、修改记录2026.9.16修改了整型和浮点型常量在无后缀时的默认类型解释新增字符型常量的八进制和十六进制编码表示形式新增转义字符的举例。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询