[工作范文]C语言编程入门-第2章.ppt_第1页
[工作范文]C语言编程入门-第2章.ppt_第2页
[工作范文]C语言编程入门-第2章.ppt_第3页
[工作范文]C语言编程入门-第2章.ppt_第4页
[工作范文]C语言编程入门-第2章.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 基本数据类型及其运算,学习目标 了解数据类型的一般概念,熟悉 C 语言中的基本数据类型 熟悉 C 语言中常量与变量的概念,掌握定义常量与变量的方法 掌握 C 语言中的基本运算 掌握基本的输入输出函数的用法 了解 C 语言操作符的优先级与结合性,2.1 C 语言的数据类型,数据类型的一般概念 C 语言数据类型关系图 常 量 整型常量 实型常量 字符型常量与反斜杠字符常量 字符串常量 符号常量,数据类型的一般概念,确定了以值为元素的数据集 值的可能范围,即定义域 确定了操作(运算)集 不同数据类型具有不同的操作集,不同数据类型的数据之间也可以进行混合运算 规定了值的存储格式 不同类型数据在计算机中存储格式不同,相同类型数据在不同计算机与编译器下的存储格式也可能不同 数据处理的基本对象 常量与变量,均属于某种数据类型,C 语言数据类型关系图,整型常量,十进制表示 以数字19开头的09序列,如9、876、55 十六进制表示 以“0x”或“0X”开头的09、A/aF/f序列,如0x55、0x1F、0x2a 0x5516 = 8510 八进制表示 以0开头的07序列,如055 0558 = 4510 ,注意不要与十进制混淆!,实型常量,一般形式:小数表示法 由整数部分、小数点与小数部分组成 例:3.1416、2.718281828 指数形式:科学计数法 由尾数部分、字符E/e与指数部分组成 例:3.14e3 = 3.14103、2.7E2 = 2.7102,字符型常量与反斜杠字符常量,字符型常量 以单引号括起来的单一字符,如A、c 字符常量按照其在字符集(一般为 ASCII 表)中的编码值存储并参与运算 反斜杠字符常量 以开头,后跟字符或数字,用于表示一个特定含义的字符,例如n表示换行字符,称为转义字符序列 常与普通字符混杂于某个字符串中,ASCII 码表,转义序列及其意义,字符串常量,字符串:以双引号括起来的一串字符 例:“Tsinghua”、“Programming in C” 字符串的长度:其中的字符数目 长度n,占用n+1字节,最后一个字节存储NULL字符0 例:“Tsinghua”占用9个字节,字符串常量与字符常量不同 字符串至少占用一个字节,为什么?,符号常量,宏定义 #define指令:预处理命令 例:#define PI 3.14 一旦定义,可以代替常量使用 可理解为对常量进行命名 目的与意义 增强程序可读性 使用有意义的名字命名 增强程序的可维护性 将值定义为符号常量,则程序中仅需要修改一次,#include #define PI 3.14 int main() float r, area; r = 3.0; area = PI * r * r; printf(“%f”, area); return 0; ,2.2 数据类型及变量,基本数据类型 变量及变量的定义 变量的初始化,基本数据类型,基本数据类型的分类 字符型:char;整型:int;浮点型:float;双精度浮点型:double;无型:void 基本数据类型的长度(位数)和取值范围与计算机和 C 编译器有关 整型二进制位数与CPU字长相同;字符单字节;浮点型4字节;双精度浮点型8字节 修饰符 有符号:signed;无符号:unsigned;短型:short;长型:long 修饰除void之外的其他四种基本数据类型,整数的取值范围,浮点数与无型数据的取值范围,变量与变量的定义,变量的定义:在程序执行过程中,其值改变的量 与常量的定义不同,常量在程序执行期间不可改变值 系统为每个变量分配合适的存储空间,以存放其值 保存待处理的数据、中间与最终运算结果 变量的四个基本特征:VANT 值(value):在任一时刻,每个变量均具有惟一值 地址(address):每个变量均具有惟一地址,且除非其生命结束,地址不可更改 名称(name):每个变量具有固定的名称或名字标识 类型(type):每个变量均具有确定的类型,不可更改,变量的定义与使用示例,#include int main() char c; int x, y, z; unsigned long distance; float m; m = 1.11; m = 2 * m; m = m + 2.2; printf(“%fn”, m); return 0; ,定义三个整型变量x, y, z,定义字符变量c,定义无符号长整型变量distance,定义浮点型变量m,对浮点型变量m进行赋值,计算过程中修改m的值,再次修改m的值,输出m的值(计算结果),变量的初始化,在定义变量时设定初始值,char c = c; float x, y, z = 4.53; double a = 15.5, b = 2.0;,将z初始化为4.53,x, y未初始化,将变量c初始化为c,ASCII值99,a, b均进行初始化,未初始化变量 并不意味空值 可以参与运算,但没有意义,往往导致错误结果,2.3 运算符与表达式,运算符(操作符)与表达式概述 混合类型数据的运算 赋值语句与赋值表达式 算术运算符与算术表达式 关系运算符与关系表达式 逻辑运算符与逻辑表达式 位运算符 其他运算符与表达式,运算符与表达式概述,表达式 由操作符与操作数组成的序列,完成一系列的运算,得到最终的计算结果 表达式结果的数据类型由参与运算的操作数确定 操作数 常量、变量、函数调用、括号内的子表达式 操作符 种类繁多,意义丰富,功能强大:39个,46种 优先级: 15级,操作符及其优先级,混合类型数据的运算,混合类型数据运算 表达式中的数据类型不可能总相同 在实际运算前将两个操作数转换成同一数据类型 类型转换 隐式类型转换:系统自动进行 基本原则:确保运算精度不会降低 整数提升:从短型到长型,先有符号后无符号 浮点数转换:从float到double再到long double 显式类型转换:程序员手工进行 可简化计算,提高程序效率 格式:(类型标识符)表达式;例:b = c + (int)a;,隐式类型转换的例子:,char ch = d; int i = 6; float f = 10.0; double d = 0.2, result; result = (ch / i) + (4 + f * d) * (f - i),计算过程: ch / i 结果为 16(整型) 4 + f * d 结果为 6.0(双精度浮点型) f i 结果为 4.0(浮点型) result 结果为 40.0(双精度浮点型),赋值语句与赋值表达式,赋值表达式 赋值操作符:优先级较低 赋值表达式的值:赋值操作符赋给目标变量的值 例:while( ( c = getchar() ) != EOF ) /* */ 赋值语句 以分号结束的赋值表达式 格式:变量名 = 表达式;例:b = c + (int)a; 赋值语句对左边变量名或等价的数组元素名实施写操作 右边的表达式结果若与左边的类型不同,则先转换再赋值,此时可能导致数据精度的损失,复合赋值操作符,注意事项 赋值操作符右边的子表达式作为整体参与运算 例: y *= x + 1 等价于 y = y * (x + 1),算术运算符与算术表达式,基本算术运算符 加(+)、减()、乘(*)、除(/)、余(%) 递增递减运算符 前缀:先递增递减,再参与运算 后缀:先参与运算,再递增递减 操作数必须为变量,而不能为其他表达式 算术表达式 例: x = ( b + sqrt( b * b 4 * a * c ) ) / ( 2 * a ),递增递减运算符 前缀:先递增递减,再参与运算 后缀:先参与运算,再递增递减,i+ (后缀)或 +i (前缀) 相当于 i = i + 1 i- (后缀)或 -i (前缀) 相当于 i = i - 1,k1 = 3, k2 = 3, j = 5; m1 = ( +k1 ) * j; m2 = ( k2+ ) * j; n = k1 + k2;,m1 = 20 m2 = 15 n = 8,关系运算符与关系表达式,关系运算符 大于()、等于(=)、小于(=)、不等于(!=) 关系表达式 关系运算符与两个操作数构成的表达式 运算结果:真或假 C语言以0表示假,以非0表示真(经常以1表示) 示 例 例:x = y,a b 常用于条件语句:if( grade 60 ) printf(“Failn”);,逻辑运算符与逻辑表达式,逻辑运算符 逻辑与(&)、逻辑或(|)、逻辑非(!) 逻辑表达式 逻辑运算符与一个或两个操作数构成的表达式 运算结果:真或假 x & y:若x、y均为真,则结果为真,否则为假 x | y:若x、y均为假,则结果为假,否则为真 !x:若x为真,则结果为假,否则为真 复杂逻辑表达式 例:x y | a b & 3 = 2 计算时一定要留意运算符的优先级,拿不准时加括号,位运算符,位运算符:以单独的二进制位为操作对象 按位与(&)、按位或(|)、按位异或()、按位取反()、左移() 位运算表,按位与运算,按位与:用以屏蔽某些位或取出某些位 示例: x = x & y,其中x原为0xB675,y原为0x00FF x为16位,取出低8位,高8位置0,x = 0xB675,y = 0x00FF,x = x & y,测试指定位是否为0 测试左边第4位是否为0:y = x & 0x1000;结果:y为0表示测试位为0,否则为1,按位或运算,按位或:用以打开某些位(将其置1) 示例: x = x | y,其中x原为0xB675,y原为0x00FF x为16位,低8位全置1,高8位不变,x = 0xB675,y = 0x00FF,x = x | y,按位异或运算,按位异或:用以判断两个操作数相应位是否相异 示例: x = x y,其中x原为0xB675,y原为0x00FF x为16位,x = 0xB675,y = 0x00FF,x = x y,按位异或的本质:按位进行的不进位加法 按位异或既可使各位翻转,也可使各位保持,按位取反运算,按位取反:将单个操作数的所有位全部翻转 示例: x = x,其中x原为0xB675,x = 0xB675,x = x,移位运算符,(左移):相当于乘2n,原高位舍弃,低位补0 格式:操作对象 左移位数 例:y = x n,其中x原为0xB675,n为2,x = 0xB675,y = x n,(右移):相当于除2n,原低位舍弃,高位补0(无符号数)或符号位(有符号数) 格式:操作对象 右移位数 例:y = x n,其中x原为0xB675,n为2,x = 0xB675,y = x n,其他运算符与表达式,条件运算符与条件表达式 格式:表达式1 ? 表达式2 : 表达式3 计算过程:先计算表达式1的值,若为真,则结果为表达式2的值,否则为表达式3的值 例:x = ( a b ) ? a : b; 上例等价于:if( a b ) x = a; else x = b; 逗号运算符与逗号表达式 以逗号连接的表达式 计算过程:从左到右逐个计算各个子表达式,结果为最后一个子表达式的值 例:z = ( x = m + n, y = m n, x / y );,2.4 基本输入输出函数,基本事实 输入输出是语言与算法必须具备的功能 C 语言本身没有输入输出语句或命令,输入输出需使用标准库函数 基本输入输出函数原型位于头文件“stdio.h”中 输入输出函数 格式化输出函数 格式化输入函数 字符输入输出函数,格式化输出函数 printf(),格式化输出函数 printf() 调用格式 printf(“输出格式描述字符串”, 输出项列表); 例:printf(“age = %dn”, age); %y:格式转换说明符 %d:十进制整数;%i:十进制整数;%f:浮点数;%e:指数形式的浮点数;%c:单个字符;%s:字符串;%u:无符号整数;%x:十六进制整数;%o:八进制整数 %m.ny:”m”表示以“%y”格式输出时,数据所占用的位数(场宽),“.n”可选,表示小数点后的位数,“”表示数据左对齐(缺省时,数据右对齐,前补空格),格式化输出示例,指出下述程序的运行结果,#include int main() int x, y, z; x = 10; y = 15; z = 25; printf(“Results as follows:n”); printf(“x = %d, y = %d, z = %dn”, x, y, z); printf(“x + y = %dnx + y + z = %dn”, x + y, x + y + z); return 0; ,Results as follows: x = 10, y = 15, z = 25 x + y = 25 x + y + z = 50,格式化输入函数 scanf(),格式化输入函数 scanf() 调用格式 scanf(“输入格式描述字符串”, 输入项列表); 例: scanf(“%d,%c”, 说 明 输入格式转换说明符与输出格式转换说明符相同 用户在终端输入的数据逐一存放到输入项列表中变量所在的地址空间;对于普通变量,变量名前需添加取址操作符 多个输入项的分隔:格式描述串中其他字符需在输入数据时一并输入;未分隔的两个输入项在输入数据时使用空格、Tab或回车键分隔,格式化输入示例,下述程序中的数据如何输入?,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论