已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
江汉大学数计学院计算中心江汉大学数计学院计算中心 第2章 数据类型和运算符 C C 语言程序设计语言程序设计 1 * 本章主要内容 l本章介绍C语言的基础,包括: 数据类型 运算符和表达式 l均是程序设计的基本知识 l为什么讨论这些知识? 通常通常程序程序要对数据进行操作处理:要对数据进行操作处理: 处理的对象是处理的对象是数据数据 通过通过运算符和表达式运算符和表达式进行操作进行操作 2 * 例如: 【例2.1】计算圆的面积,半径为 5 cm。 程序如下: main( ) float r r, , areaarea ; ; r r=5 5 ; ; areaarea=3.143.14*r r*r r; ; printf (“%fn “, areaarea) ; 运算结果是输出运算结果是输出圆的面积:圆的面积:78.50000078.500000 程序中用到的数据:程序中用到的数据:r r、areaarea、5 5、3.143.14 对数据进行的运算:对数据进行的运算:* * 、= = 3 * 分析: 计算机操作处理时,要完成以下工作: l在内存中给半径 r 和运算结果 area 开辟 存储空间,存放它们的值。应该留多大的 地方来存放它们的值? l数据 5 和 3.14 与 r 、area 不同,它们是 在编写程序时就给出确定的值,在运算过 程中不会改变。这样的数计算机怎么处理 ? l对整数 5 和小数3.14 ,计算机存放时是 否有区别? 涉及数据类型涉及数据类型 的基本知识的基本知识 4 * 2.1 C程序的符号系统 lC程序中可以出现的字符包括: 基本字符 标识符 5 * 2.1.1 基本字符集 l大写英文字母:A B C X Y Z l小写英文字母:a b c x y z l数字:0 1 2 9 l空白符:空格符、换行符、制表符 l特殊字符:+ - * / ( ) _ = ! # % . , ; : “ | m= -3; printf(“m=%dn“,m); printf(“m=%un“,m); 输出结果:输出结果: m=m=-3-3 m=m=42949672934294967293 按有符号数输出 按无符号数输出 18 * 整型数据的类型及规定 l方括号表示可选项(可不出现) lshort 分配2 Byte,int、long分配4 Byte 类型名称类型符bit取值范围 短整型signed short int 16 -215215-1(-3276832767 ) 整型signed int32-231231- 1 无符号整型unsigned int320 232-1 长整型signed long int32-231231- 1 无符号长整型 unsigned long int320 232-1 19 * 2.2.2 实型数据 1实型数据的类型 单精度实型数据 float,分配4 Byte 双精度实型数据double,分配 8 Byte 2实型数据的存储 单精度实型单精度实型 指数部分指数部分小数部分小数部分 小数的符号位指数的符号位 20 * 实型数据的类型及规定 lC标准并未具体规定各种实型数据所占字节数,也不规 定具体小数和指数部分的位数。 l一般而言,小数部分位数多,数据表示的有效数字多, 精度就高;而指数部分位数多,则表示的数据范围更大。 类型类型符Byte绝对值的范围 有效数字 单精度型 float 4 10-37 1038 78 位 双精度型 double810-307 103081516位 21 * 2.2.3 字符型数据 l字符型数据char,分配 1 Byte l字符型数据是指字母、数字、各种符号等 用ASCII值表示的字符 l例如 a 是一个char类型数据,称作字符 常量,存储: 0 1 1 0 0 0 0 10 1 1 0 0 0 0 1 2.1.4 2.1.4 空类型空类型 l l 空类型空类型voidvoid l l 通常与指针或函数结合使用通常与指针或函数结合使用 22 * 2.3 常量 l在运行程序的过程中值保持不变的量 1整型常量 十进制:09 八进制:07,以 0开头 十六进制:09,AF/af,以 0X或 0x开头 例如:例如: 100 -8 0 +123100 -8 0 +123 010 024 0100 073010 024 0100 073 0 0x38 0x10 0X10 0XFF 0x0ax38 0x10 0X10 0XFF 0x0a 23 * 1. 整型常量 l整型常量的类型: 根据值大小默认类型。 整型常量后面加l或L,则认为是long int型 例如:123L、0L、432l、0x100l 注意:注意: l l 十六进制常量中可以使用大写字母十六进制常量中可以使用大写字母A AF F, 也可以使用小写字母也可以使用小写字母a af f。 l l 八进制常量中不能出现数字八进制常量中不能出现数字 8 8 或或 9 9 例如:例如:018018、09210921非法非法 24 * 2. 实型常量 十进制形式 1.0 1. +12.0 -12.0 0.0 指数形式 1e3 1.8e-3 -123E-6 -.1E- 3 等价于:等价于:110110 3 3 1.810 1.810-3 -3 - -1231012310-6 -6 - -0.1100.110-3 -3 指数只能是整数,而尾数则可以是整数也可以是 小数 ,无论指数或尾数均不能省略 例如:1 1e e、E.5E.5、E-3E-3 非法 实型常量的类型:默认为doubledouble型,后面加F F( 或f f),则强调表示该数是float类型 例如:3.5f f、1e2F F 25 * 3. 字符型常量 l可视字符常量 单引号括起来的单个可视字符 例如:a、A 、+ 、3、 等 l转义字符常量 单引号括起来的 与可视字符组合,例如: 0字符串结束标志 n回车换行 t跳到下一个输出位置 “双引号字符 dddddd为1到3位八进制数所代表的字符 xhhhh为1到2位十六进制数所代表的字符 26 * 4. 字符串常量 l用双引号括起的一个字符序列 例如:“ABC“、“123“、“a“、 “nt “ “nGood morning“ l字符串常量的长度 : 所包含的字符个数 l字符串常量的存储方式: n G o o dm orni n g 0 a0 所占存储单元数:所占存储单元数:串长度串长度1 1 例如:例如: 字符串 结束标记 27 * 5. 符号常量 l以标识符来代表的常量 l事先编译预处理命令define定义 l编译时先由系统替换为它所代表的常量,再进行 编译 例如: # #define define LENLEN 2.52.5 main( )main( ) float a,b; float a,b; a= 2*3.14 * a= 2*3.14 *LENLEN; ; b=3.14* b=3.14*LENLEN* *LENLEN; ; printf(“aprintf(“a=%=%f,bf,b=%=%fn“,a,bfn“,a,b); ); 定义符号常量定义符号常量 使用符号常量使用符号常量 编译前系统进行替换编译前系统进行替换 28 * 5. 符号常量 main( ) float a,b; a= 2*3.14 *2.5; b=3.14*2.5*2.5; printf(“a=%f, b=%fn“,a,b); definedefine是编译预处理命令,必须以是编译预处理命令,必须以“ “# #” ”开头开头 编译预处理命令在第编译预处理命令在第7 7章讨论。章讨论。 将将“ “LEN”LEN”替换为替换为“ “2.5”2.5” 29 * 2.4 变量 1. 变量的有关概念 l在程序运行过程中,其值改变的数据,称为 变量,变量用标识符表示,称为变量名。 l变量必须“先定义后使用” l系统为变量分配存储单元,存储变量的值。 l编写程序时通过变量名来存、取变量值。 a a 510510变量值变量值 为变量分配的为变量分配的 存储单元存储单元 变量名变量名 例如:例如: 有有变量变量a a 它的值是它的值是5 51010 30 * 2. 变量定义 变量定义的一般格式: 数据类型说明符 变量列表; 例如:int i, j; long k, m; float x,y; char ch1,ch2; 必须使用必须使用合法的标识符合法的标识符作变量名作变量名 不能使用关键字不能使用关键字为变量命名为变量命名 31 * 3. 变量的初始化: 允许在说明变量的时候对变量赋初值 。 例如:int a=5, b=10+2; double x=23.568, y ; char ch1=a, ch2=66, ch3=142; 表示定义变量并对变量存储单元赋值。 错误的初始化: int a=3+b, b=5; float m=n=23.16; 32 * 2.5 运算符和表达式 l主要内容: 算术运算符和算术表达式 赋值运算符和赋值表达式 关系运算符和关系表达式 逻辑运算符和逻辑表达式 位运算符和位运算表达式 条件运算符和条件表达式 逗号运算符和逗号表达式 其他运算符及其运算 33 * 运算符的有关概念 l作用: 对运算对象完成规定的操作运算 l类型: 按运算对象分: l单目、双目、三目 按功能分: l算术、赋值、关系、逻辑 l条件、逗号、位、其他 34 * 运算符的优先级和结合性 l优先级 指各种运算符号的运算优先顺序 例如:算术运算优先于关系运算 算术运算中先 * / 后 + - l l 结合性结合性 指运算符号和运算对象的结合方向指运算符号和运算对象的结合方向 分为:从左向右分为:从左向右( (左结合左结合) )和从右向左和从右向左( (右结合右结合) ) 例如:例如:算术运算符为算术运算符为左结合左结合 a-ba-b+ +4 4 赋值运算符为赋值运算符为右结合右结合 a= b = 5a= b = 5 35 * 本章涉及的运算符 + - * / % + - + - = += -= *= /= %= a=a+1 表达式的值为5,且 a=6, b=5 41 * 说明: l+ 和 - 的运算对象只能是变量(或运算结果是 变量的表达式), 不能是常量(或运算结果是数值 的表达式)。 例如: 5+、(a+2)+ 不合法。 l具有右结合性,结合方向为从右到左。 例如: a+ 等价于 -(a+) l如果有多个运算符连续出现时,C系统尽可能多 的从左到右将字符组合成一个运算符 例如: i + j 等价于 ( i+)+j -i+-j 等价于 -(i+)+(-j) 42 * 赋值运算 l赋值运算符(右结合) = += -= *= /= %= c=(-a+)+(+b); d=(b-)+(+a)-a; 运行结果:运行结果: a=3; b=2; c=2; d=3a=3; b=2; c=2; d=3 62 * 综合举例综合举例 2 2 int a=1,b=2,c,d,e; c=(-a+)+(+b); d=(b-)+(+a)-a; e=(a/(+b)-(b/(-a); 运行结果:运行结果: a=2; b=3; c=2; d=3; e=a=2; b=3; c=2; d=3; e=0 0 63 * 综合举例综合举例 3 3 int a=2,b=3,c,d,e,f; c=(a+ = -b); d=(a= = +b); e=(a- != b); f=(+ a b-); c=1 a=3 b=2 d=1 a=3 b=3 e=0 a=2 b=3 f=0 a=3 b=2 运行结果 a=3; b=2; c=1; d=1; e=0; f=0a=3; b=2; c=1; d=1; e=0; f=0 64 * 综合举例综合举例 4 4 int x=4, y=25, z=2; z=(-y/+x)*z-; 运行结果:运行结果: z=7z=7 65 * 综合举例综合举例 5 5 int x=y=z=0; +x|+y int x=y=z=0; +x int x=y=z
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《生物化学》课件-原核基因表达调控
- 2024北京顺义一中高三10月月考化学试题及答案
- 康田物业面试技巧行业知识储备与面试实战经验分享
- 工程领域高级工程师必-备面试礼仪与技巧
- 客户关系管理方案设计
- 哈密民族工艺品制作技艺及市场分析
- 思维助教面试中的自我介绍技巧
- 客户关系维护与服务质量提升策略
- 后勤专员岗位物资采购流程
- 安全监督处安全监督处会议管理制度
- 生产副总年终工作总结
- 青岛啤酒经销商协议合同
- 超声窦卵泡计数临床实践与应用
- 入团考试题及答案2025
- 钓鱼场转让合同范本
- 打木架承包合同协议书
- 高中生艾滋病预防教育课件
- 反洗钱系统优化与可疑交易识别
- 2025年高考语文二轮复习:文言文阅读 5类50题强化练习题(含答案解析)
- 生物质热能供暖系统行业深度调研及发展战略咨询报告
- 陕西省宝鸡市陈仓区2024-2025学年五年级数学第二学期期末复习检测试题含答案
评论
0/150
提交评论