版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Contents本章学习导航C语言数据类型、运算符与位运算的系统性学习路径01数据类型基础C语言数据类型概览常量与变量的本质整型数据详解实型数据详解字符型数据详解字符串常量数据类型转换02运算符与表达式算术运算符与表达式赋值运算符与表达式自增自减运算符逗号运算符与表达式sizeof运算符03位运算专题位运算基础概念六种位运算符详解位运算应用实例Section2.1细说数据类型理解编程语言的基石DATATYPESC语言数据类型概览数据类型决定了变量可以存储的值的种类、占用的内存空间大小以及可以执行的操作。基本类型int整型、float单精度浮点、double双精度浮点、char字符型。用于存储整数、小数和单个字符,是C语言中最基础的数据类型。int·char构造类型数组、结构体struct、联合体union、枚举enum。由基本类型组合而成,用于描述复杂的数据结构和集合。struct·union指针类型用于存储内存地址的特殊类型,支持动态内存管理与数组操作。通过指针可以直接访问和修改内存中的数据。*pointervoid类型表示无类型,常用于函数返回值声明和通用指针定义。void*可以指向任何类型的数据,提供灵活的类型转换能力。void类型选择原则:根据数据的取值范围和精度要求选择合适的类型,避免内存浪费或溢出。PROGRAMMINGFUNDAMENTALS常量与变量的本质常量是程序运行过程中值不能被改变的量;变量是程序运行过程中值可以被改变的量。CONSTANT·常量01字面常量直接写在程序中的值,如100、3.14、'A'、"hello"02符号常量使用#define预处理指令定义,如#definePI3.1415903const关键字如constintMAX=100;定义只读变量VARIABLE·变量01变量名(标识符)用于访问变量的符号名称02数据类型决定变量占用内存大小和存储方式03变量值存储在内存中的具体数据04内存地址变量在内存中的存储位置DATATYPES·基础数据类型整型数据详解整型用于表示整数,根据是否带符号和占用字节数分为多种类型,涵盖有符号、无符号与多种进制常量表示。整型类型分类shortint—2字节,-32,768~32,767int—4字节,-2.1B~2.1Blongint—4/8字节,视系统而定longlong—≥8字节,范围极大4级宽度无符号类型使用unsigned修饰符声明无符号整数,如unsignedint不存储符号位,正数表示范围扩大一倍适用于计数、索引、位运算等非负场景×2范围整型常量表示十进制—直接书写,如123、-456八进制—以0开头,0123=十进制83十六进制—以0x开头,0xFF=2553种进制CDATATYPES实型数据详解实型(浮点型)用于表示带有小数部分的数值,采用科学计数法存储,是C语言中处理实数运算的核心数据类型。浮点类型分类float(单精度):占4字节,有效数字约6–7位,精度较低double(双精度):占8字节,有效数字约15–16位,默认浮点类型longdouble:占8–16字节(平台相关),精度更高4/8/16B浮点常量表示十进制小数:3.14、0.123、.5、2.指数形式:1.23e4即1.23×10⁴后缀标记:1.5f=float,1.5L=longdouble1.23e4浮点数精度问题浮点数在内存中采用IEEE754标准存储,存在舍入误差比较两个浮点数是否相等应使用误差范围:fabs(a-b)<EPSILONIEEE754CLanguageFundamentals字符型数据详解字符型用于表示单个字符,本质是存储字符的ASCII编码值。字符型类型char:占1字节,存储ASCII字符,范围-128到127signedchar:有符号字符,范围-128到127unsignedchar:无符号字符,范围0到2551Byte字符常量表示普通字符:用单引号括起来,如'A'、'0'、'+'转义字符:以反斜杠开头,如'\n'(换行)、'\t'(制表符)、'\\'(反斜杠)ASCII码:'\x41'或'\101'均表示字符'A''A'常用转义字符\n换行·\t水平制表符·\r回车\0空字符(字符串结束标志)\b退格\0CLANGUAGE·DATATYPES字符串常量由双引号括起来的字符序列,在内存中以字符数组形式存储字符串常量特点用双引号定义:"HelloWorld"编译器自动在末尾添加结束符'\0'"Hello"实际占用6字节6字节字符与字符串的区别'A'是字符常量,占1字节"A"是字符串常量,占2字节空字符串""占1字节(仅含'\0')1vs2字符串的存储方式存储在只读数据区,不可修改可用字符数组或字符指针操作长度用strlen()获取,不含'\0'只读TypeConversion数据类型转换不同类型数据参与运算时,需要进行类型转换以统一操作数类型。自动类型转换隐式转换编译器自动完成,遵循"向高精度转换"原则。例如int+double时,int自动转为double。char→int→long→float→double强制类型转换显式转换使用(类型名)表达式语法。高精度转低精度会丢失精度,编译器可能给出警告。(int)3.14→结果3类型转换陷阱PITFALLS有符号与无符号混合运算时,有符号数转为无符号数可能导致意外结果。浮点数转整数直接截断小数部分,不是四舍五入。(int)(3.5+2.1)≠(int)3.5+2.1Section02·Part2诸算达人运算符和表达式Operator·运算符基础算术运算符与表达式基本算术运算符+加法:5+3=8−减法:10−4=6,可作负号−x×乘法:6×7=42÷除法:10÷3=3(整数截断)%取模:10%3=1,仅限整数5种除法与取模要点整数相除结果仍为整数,小数部分被截断。7/2→3取模运算%的两个操作数必须是整数,浮点数不可参与。负数取模的结果符号与被除数相同:-7%3=-1−7%3=−1表达式优先级01()括号最高02+−(unary)一元运算03*/%乘除取模04+−加减最低同级运算符从左到右计算(左结合性)4级ASSIGNMENTOPERATORS赋值运算符与表达式赋值运算符用于将右侧表达式的值存入左侧变量中,是程序中最频繁使用的基础操作。基本赋值运算符=是最基本的赋值运算符,不是"等于"判断。语法:x=5+3;赋值表达式的值是被赋的值,支持连续赋值:a=b=c=10;=复合赋值运算符+=a+=5→a=a+5-=a-=5→a=a-5*=a*=5→a=a*5/=a/=5→a=a/5%=a%=5→a=a%5+=-=*=赋值时的类型转换右侧表达式类型会自动转换为左侧变量的类型,属于隐式转换。这种转换在编译时自动完成,无需额外代码。例如intx=3.14;发生隐式转换,x的值变为3,小数部分被截断丢弃。注意:可能导致精度丢失,建议显式转换确保意图清晰。3.14→3CLANGUAGE·OPERATORS自增自减运算符自增(++)和自减(--)运算符用于将变量值加1或减1,是C语言的特色运算符。前置与后置的执行顺序不同,直接影响表达式的求值结果。01前置与后置的区别++x/--x先将变量加1(或减1),再使用变量的新值参与表达式运算x++/x--先使用变量的当前值参与运算,再将变量加1(或减1)02示例对比inta=5;intb=++a;a先加1变为6,再赋值给b→a=6,b=6inta=5;intb=a++;a的当前值5先赋给b,a再加1→a=6,b=503使用注意事项只能用于变量,不能用于常量或表达式——5++和(a+b)++均为非法写法避免在单个表达式中多次修改同一变量,否则行为可能未定义CLANGUAGE逗号运算符与表达式将多个表达式串联,从左到右依次计算,最终值为最后一个表达式的值。语法形式表达式1,表达式2,…,表达式n,从左到右依次计算每个表达式。逗号作为分隔符连接多个子表达式,形成完整的逗号表达式结构。expr1,expr2,…,exprN取值规则整个逗号表达式的值等于最右边最后一个表达式的值。前面所有表达式仅执行副作用,最终结果由末尾表达式决定。x=(a=3,a+5,a*2)→6最低优先级逗号运算符在所有运算符中优先级最低,低于赋值运算符。若需整体作为右值,必须用括号明确运算意图。a=1,2,3→a=1典型应用for循环中同时初始化或更新多个变量,宏定义中执行多条语句,实现紧凑的多操作表达式。i++,j--CLANGUAGE·OPERATORsizeof运算符获取数据类型或变量所占用的内存字节数,编译时计算,不是函数调用。两种用法01sizeof(类型名)—获取指定类型占用的字节数02sizeof(表达式)—获取表达式结果或变量的字节数03是运算符而非函数,括号有时可省略:sizeofx与数组sizeof(数组名)返回整个数组占用的总字节数元素个数=sizeof(数组)/sizeof(元素类型)常见数据类型Type字节数char1short2int4long4/8float4double8pointer4/8long与指针的大小取决于32位或64位平台CHAPTER02·SECTION03位在我心中——位运算BINARYOPERATIONS位运算基础概念位运算直接对数据的二进制位进行操作,效率高,常用于底层编程和优化。位运算的特点直接操作二进制位,无需转换,执行速度快仅适用于整数类型(char、short、int、long)广泛用于系统编程、嵌入式开发与加密算法IntegerOnly二进制基础回顾计算机内部以二进制存储所有数据正整数直接转二进制:5→00000101负整数用补码表示:-5→11111011补码计算方法:原码取反再加12'sComplement位运算的应用场景设置或清除特定位,实现标志位操作快速完成乘以或除以2的幂次方运算高效实现数据压缩与加密处理Low-LevelBITWISEOPERATORS六种位运算符详解&按位与两个位都为1时结果为1,否则为0。常用于清除特定位或判断奇偶性(n&1)。•掩码过滤•权限校验CLEARBIT·PARITY·MASK|按位或两个位都为0时结果为0,否则为1。主要用途是将特定位置设为1,实现标志位的设置操作。•标志位合并•默认启用SETBIT·FLAGCOMBINE^按位异或两个位不同时结果为1,相同时为0。特性a^a=0、a^0=a,可用于无临时变量交换。•交换两数•翻转特定位SWAP·TOGGLE·XORCIPHER~按位取反一元运算符,将每一位取反:0变1,1变0。常用于构造掩码或对数据进行位级翻转操作。•生成反码•补码运算FLIPALLBITS·ONE'SCOMPLEMENT<<左移将各位向左移动指定位数,右侧补零。左移n位相当于乘以2的n次方,是高效的乘法替代。•快速乘法•位宽扩展×2ⁿ·ARITHMETICSHIFTLEFT>>右移将各位向右移动指定位数,左侧按符号位填充。右移n位相当于除以2的n次方,实现高效除法。•快速除法•符号保留÷2ⁿ·ARITHMETICSHIFTRIGHTPRACTICALCODE位运算应用实例通过实际代码示例演示位运算符在编程中的典型应用。判断奇偶数原理:奇数的二进制末位为1,偶数为0if(n&1)printf("奇数");elseprintf("偶数");n&1交换两个变量利用异或的性质:a^a=0,a^0=aa=a^b;b=a^b;a=a^b;XOR快速乘除2的幂左移等价乘法,右移等价除法,性能远优于算术运算x<<3→x*8x>>2→x/4<<>>设置/清除特定位精准操控二进制中任意一位的状态置1:x|=(1<<n)清0:x&=~(1<<n)翻转:x^=(1<<n)1<<nSUMMARY本章小结本章系统学习了C语言的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危险化学品数据质量管理方案
- 水库护坡工程施工方案
- 中小学体育运动损伤预防手册
- 危险化学品使用过程追溯方案
- 医药营销预算编制方案
- 物流工程领域工程硕士培养教学课件
- 数控机床操作员入职培训
- 制造企业智能排产系统设计
- 项目制企业工时填报管理规范
- 中小学教师教学常规手册
- 单位工作餐订餐协议
- 公立医院低值耗材管理的财会监督改进研究
- 肿瘤免疫治疗与护理
- 国家开放大学2022《土木工程力学(本)》形考作业1-5参考答案
- 关于公立医院监督执纪工作的调研报告
- JTG-GQS-010-85公路桥涵设计图
- 电缆敷设现场操作安全与事故防控
- JC-T 2104-2012水泥工业用耐磨件堆焊通用技术条件
- 海外市场开拓计划书
- 第七章 多晶体织构的测定
- 普通中等专业学校招收初中毕业生报名登记表
评论
0/150
提交评论