第三章基本数据类型、运算符与输入输出函数.pps
《第三章基本数据类型、运算符与输入输出函数.pps》由会员分享,可在线阅读,更多相关《第三章基本数据类型、运算符与输入输出函数.pps(106页珍藏版)》请在三一文库上搜索。
1、1,第三章 基本数据类型、运算符与输入输出函数,3.1 基本数据类型 3.2 常量 3.3 变量 3.4 C语言的运算符和表达式 3.5 输入输出函数,2,3.1 基本数据类型,3,3. 2 常量 何谓常量程序中直接书写的数据; 例如:a=100; b=a+12; 常量类型以字面形式区分; 例如: 12 (基本整型) 3.5 (实型) 123L (长整型) A (字符型) 符号常量用标识符代表一个常量。,4,3.2 常量,3.2.1 整型常量 整型常量就是整常数,可以用三种进制形式表示: 1十进制数:以非0数字开头的数。如123,-123等,其每个数字位可以是09。 2八进制数:以数字0开头的
2、数。如0123,-0123等,其每个数字位可以是07。 3十六进制数:以0x(或0X)开头的数。如0xffff,0x1111,-0x123等,其每个数字位可以是09、AF(或af)。,5,3. 整常量类型 int 型常数: 3276832767视为int常数; 可赋给int、long型变量。 long型常数: 在 2147483648 2147483647之内、但超出 3276832767的数及带后缀l / L的视为long型常数;可赋给long型变量。,2147483648 32768 0 32767 2147483647,long int long,带后缀 l 或L的数:long,6,整型
3、量的溢出 若一个变量无法容纳下要存入的数,这种现象称为溢出,溢出将导致数据存储错误;在运算过程中也有可能产生溢出导致运算结果错,因此程序设计中应避免产生溢出。 例:int a, b; a=65538; b=123*456; printf(“a=%d, b=%d“, a, b); a=2, b=-9448 (溢出的错误结果),YS,7,溢出原因: 1) a=65538; 65538=(1 0000 0000 0000 0010 )2 a: 只存入后16位 2) b=123*456; 123456=56088=( 1101 1011 0001 1000 )2 b: -9448的补码,0000 00
4、00 0000 0020,1101 1011 0001 1000,8,解决办法: long a, b; a=65538; b=123*456; /*计算结果有溢出*/ printf(“a=%ld, b=%ld“, a, b); a=65538, b=-9448 (仍有错) long a, b; a=65536; b=123L*456; printf(“a=%ld, b=%ld“, a, b); a=65536, b=56088 (正确),9,3.2 常量(续),3.2.2 实型常量 实型常量在C语言中又称为实数或浮点数。在C语言中,实数只采用十进制。它有两种表示形式: 1十进制形式。这种形式的
5、数由整数部分、小数点和小数部分组成(注意必须有小数点)。如:1.24,0.345,.222,234.0,333.,0.0等。 2指数形式。这种形式由三部分组成:实数部分、字母E或e和整数部分。象123x1022可以表示为123E22或123e22。要注意,字母E或e之前必须有数字,之后的数字必须为整数。如e3、2.1e3.5、2.7e、e等都不是合法的指数形式。,10,【例】123.0 0.123 -14.2 0.0 0. .123 【例】表示12亿3千万 数学方式1230000000或12.3108 程序中1230000000.0 (小数形式的实常数) 12.3e+8、1.23e9、123e
6、7 (指数形式),11,指数形式说明: 12.3 e+8 指数部分 数值部分 指数部分:e表示以10为底,可大/小写; 8为指数值(幂), 只能是整数; 指数符号为正可省略; 数值部分: 可是小数或整数;,12,【例】表示电子质量0.9110-30 小数形式:0.0000 0091 指数形式:0.91e-30、0.91E-30、91e-32 可见:在程序中表示较大或较小数时,采用指数 形式简洁、不易书写错。 注意: 一个数可写成多种指数形式,但存储格式一致; 2) 指数部分不可单独代表常数; 如表示108:e+8被编译系统理解为变量e加8; 正确表示:1.0e8、1e8,13,3.2 常量(续
7、),3.2.3 字符常量 C语言中的字符常量是用单引号()括起来的一个字符。如A、x、D、?、3、X等都是字符常量。 C语言中还规定有另一类字符常量,它们以开头,被称作转义字符,意思是将反斜杠()后面的字符转变成另外的意义。,14,C特别规定的转义字符:,15,例: 在程序中表示下列字符 字符A : A 101 x41 字符3: 3 63 x33 单引号: 空格: 40 x20 回车换行: n 不可键入字符: 362 xf2 例:在程序中表示字符序列ABC、123 “ABC“、“123“ 构成字符串常量,16,3.2 常量(续),3.2.4 字符串常量 字符串常量是用双引号括起来的字符序列。如
8、:“string“、“This is my first program!“。C语言规定字符串的存储方式为:串中的每个字符(转义字符只能被看成一个字符)按照它们的ASCII码值的二进制形式存储在内存中,并在存放串中最后一个字符的位置后面再存入一个字符0(ASCII码值为0的字符),这是字符串结束的标志。,17,字符串常量 1) 表示由一对双引号括起来的字符序列; ”How do you do.” 长度:14 ”123.456” 长度:7 ”a” 长度:1 在程序中表示下列字符串: xy ”xxf2y” 长度:3 C:DOS ”C:DOS” 长度:6 ”OK!” ”OK!” ” 长度:5,18,2
9、) 存储双引号内每个字符占用一个字节,所有 字符按顺序连续存储,自动在最后加入字串 结束标志:空字符 例: 0010 0000 0000 0000 空字符:名为NUL的控制字符 其ASCII码值:0 程序中表示: 0 注意:空字符与空格字符是不同的字符。,19,3.2 常量(续),3.2.5 符号常量 C语言允许将程序中的常量定义为一个标识符,称为符号常量。符号常量一般使用大写英文字母表示,以区别于一般用小写字母表示的变量。符号常量在使用前必须先定义,定义的形式是: #define 标识符 常量,20,3.3 变量 变量用标识符标识且在程序运行过程中允许被改变的量; C变量命名(C标识符)规则
10、: 由大或小写字母、数字、下划线组成,且第一 个字符必须是字母或下划线。 变量名长度: MS C有效字符为8个,多余部分不予识别; Turbo C隐含有效字符为32个,可自行调整。,21,变量命名举例: 合法:sum、SUM、Average、toal、cost_1、_1 非法:for、num-1、2a、8L、ABC# 注意: 1. C变量名中字母可大小写,但有大小写之分, SUM、sum、Sum被视为不同的变量。 2. 有效字符相同的变量名被视为是同一个变量; 如MS C中student_name与student_number。 3. 在实际应用中命名应尽量见名知义。 4. C中变量必须先定义
11、后引用。,22,与变量有关的概念: 1) 变量三要素:变量名、变量地址、变量值 2) 变量的地址 (变量的指针) 给变量分配的存储单元第一个字节的地址; 例如:int n, m; n=10; m=25;, ,n的地址 202 m的地址 204,10 25,23,3) 变量被赋值的物理意义是向它的存储单元存数; 4) 变量可多次被赋值,新值将覆盖旧值; 例如:n=10; /*赋值:破坏性的*/ n=45; 5) 变量被引用的物理意义是从它的存储单元中读数; 例如:n=10; m=n+2; /*引用:非破坏性的*/ 6) 两变量内容的交换可借助另一个变量或利用运算 关系实现。,24,5,10,例如
12、:实现两个变量内容的交换 方法1:利用中间变量实现 int a=5, b=10, t; t=a; a=b; b=t; 方法2: a=a+b; /*5+10=15a*/ b=a-b; /*15-10=5 b*/ a=a-b; /*15-5=10a*/,10,a,t,b,5,5,25,3.3 变量 (续),3.3.2 整型变量 整型变量可分为:基本型、短整型、长整型和无符号型。无符号型又分为无符号整型、无符号短整型和无符号长整型。,26,整型变量 分类分为六类,27,在Turbo C中:,28,3.3 变量 (续),3.3.3 实型变量 C实型变量分单精度(float型)和双精度(double型)
13、两类。,29,实型变量分为两类;,30,实型量的舍入误差 例:float a, b; a=123456.789e5; /*赋值产生误差*/ b=a+20; /*引用误差的a*/ printf(“%f“, b); 12345678848.000000 (前7位有效) 理论值应为: 12345678900.0+20=12345678920.0 要精确存储12345678900.0需37bit尾数; 解决办法:double a, b;,31,3.3 变量 (续),3.3.4 字符型变量 字符型变量用来存放单个字符,定义形式如下: char c1, c2; 可对c1、c2赋值,c1=a;c2=b;注意
14、不能将字符串常量赋给一个字符变量。,32,字符变量的存储及引用 例:char c1, c2 ; c1=A ; c2=c1; 存储: c1: 若:c1按字符解读字符A c1按整数解读 +65,33,3.4.1 算术运算符和算术表达式: 1) 基本算术运算符: + 加 / 取正 (双目运算符 / 单目运算符) 减 / 取负 (双目运算符 / 单目运算符) * 乘 (双目运算符) / 除 (双目运算符) % 整除取余 (双目运算符),3.4 C语言的运算符和表达式,34,注意: +、-为复用运算符; 如:int a, b, c; a=5; b=a-3; /*减:两个运算目标*/ c=-a; /*取负
15、:一个运算目标*/ 2) 两整数相除结果仍为整数 如:5/2 2 -5/3 -1 1/2 0 要依实际应用情况加以利用或避免。,35,3) 求余运算要求两运算元素均为整型,余数仍 为整型; 如:int a, b; a=11%3; /*2 a*/ b=5%a; /*1 b*/ 若有: a=11.0%3; 编译时将视为语法错。,36,2) 算术表达式: C表达式由运算符、括号将运算元素连接起来 的有值的式子。 算术表达式 由算术运算符、括号将数值型的运算元素连 接起来,其值为数值量的式子。 其中:运算元素可为常量、变量、函数调用等。 如:28+a sin(1.0)*10+y,37,注意: 为保证表
16、达式运算关系的正确性,需加入必要的括号,并注意括号的层次及配对关系; 2) 乘号不得省略; 3) 应避免整型量相除可能带来的不良影响; 4) 函数调用是以函数的返回值来参与运算的。,38,自增、自减运算符 自增1:+ 自减1: 含义: +i 前置自增;先自加1,后引用; i+ 后置自增;先引用,后自加1 ; i 前置自减;先自减1,后引用; i 后置自减;先引用,后自减1 ; 意义:可提高执行效率。,优先级2级、单目、自右而左,39,注意: 只能对变量进行自增、自减运算; 2) +、- 、取负同为二级,结合性:自右而左; 如: i=3; j= -i+; /* -3j , i: 4 */ 3)
17、自加/减作为函数参数时,注意参数求值顺序; 如:i=3; printf(“%d,%d“, i, i+); 4, 3 3, 3,输出顺序,Turbo C求值顺序,Unix C求值顺序,40,3.4 C语言的运算符和表达式 (续),算术运算符和算术表达式 注意以下几点: 两个整数相除结果为整数,如5/3的结果为1。如果参加运算的两个数中有一个数为实数,则结果是double型。 模运算符%,又称求余运算符,要求%两侧均为整型数据,如7%4的值为3;而且余数的值符号与被除数一致,如7%4的值为3。 运算符“+ +”是操作数加1,而“”是操作数减1,只适用于变量,不能用于常量或表达式。,41,3.4 C
18、语言的运算符和表达式 (续),3.4.2 赋值运算符和赋值表达式 一、基本赋值运算符 二、复合赋值运算符,42,赋值运算符和赋值表达式 1. 赋值运算符 = 优先级14级、双目、自右而左; 2. 赋值表达式 一般形式:变量 = 表达式 其中: 表达式可是C任何形式的表达式,包括算术、 条件、逗号、赋值等表达式; 特殊形式:单独的常量、变量、函数调用。,43,例:b=20 c=sin(1.0) d=pow(2, b)/2 e=ab a=(b=5) a=b=c=d=0 c=b=a*2; a=(b=10)/(c=2),44,3. 赋值运算时的类型转换 被赋值变量的类型与表达式值的类型一致, 直接赋值
19、;不一致系统自动以被赋值变量的类型 为准进行转换,然后赋值。 例:int i=10, j; float f; double d; i=i-5; /* 5i */ j=i+3.56; /*8 j */ f=23; /*单精度23.0 f */ d=j+f; /*双精度31.0 d */,45,注意:赋值时的自动类型转换所造成的误差 例:main( ) float x, y ; /*double x, y;*/ x=123.456781234; y=x+0.111111111; printf(”X=%f,Y=%fn”, x,y); X=123.456779, y=123.567894 x、y改为双
20、精度的结果: x=123.45678123400000,y=123.56789234500000,46,复合赋值运算符 在赋值运算符前加上其它双目运算符构成; 算术复合赋值运算符: + = 和赋值 = 差赋值 * = 积赋值 优先级14级、自右而左 / = 商赋值 %= 模赋值 意义:提高编译效率、目标代码的质量。,47,例: a=a+3 a+=3 x=x%3 x%=3 x=x*(y+8) x*=y+8 a=a*b-3 a*=b-3 a=a*(b-3) 注意:复合赋值运算符针对右边整个表达式。 例:a=6; a+=a*=a-1; /*60 a*/,48,3.4.3 关系运算符和关系表达式 1.
21、 关系运算符 (比较运算符) 六个: 大于 = 大于或等于 = 等于 != 不等于,6级、双目、自左而右,7级、双目、自左而右,49,2. 关系表达式 一般形式: 表达式1、2的形式:算术、赋值、逗号、关系等任 何C合法的表达式。 关系表达式的值:逻辑值真、假 真对应关系式成立,用整型量1代表; 假对应关系式不成立,用整型量0代表; 关系表达式的位置:C任何允许使用表达式的位置。,50,如:if (a10); 作为函数的参数 k=m!=1 赋值表达式的右边 c=c+(g=60) 表达式的一个运算元素 举例:说明下列关系式的含义 1) isqrt(c) 3) a%2=0 4) (c=getcha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 基本 数据类型 运算 输入输出 函数
链接地址:https://www.31doc.com/p-2285418.html