数据类型、运算符号与表达式

上传人:豆浆 文档编号:50813219 上传时间:2018-08-11 格式:PPT 页数:51 大小:752KB
返回 下载 相关 举报
 数据类型、运算符号与表达式_第1页
第1页 / 共51页
 数据类型、运算符号与表达式_第2页
第2页 / 共51页
 数据类型、运算符号与表达式_第3页
第3页 / 共51页
 数据类型、运算符号与表达式_第4页
第4页 / 共51页
 数据类型、运算符号与表达式_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《 数据类型、运算符号与表达式》由会员分享,可在线阅读,更多相关《 数据类型、运算符号与表达式(51页珍藏版)》请在金锄头文库上搜索。

1、C程序设计南京师范大学主讲教师: 汪闽2.1 程序设计概述2.3 数据类型2.4 常量与变量2.5 不同类型数据间的转换第二章 数据类型、运算符号与表达式2.6 运算符和表达式2.2 预备知识:数制之间的转换一个程序应包括 1)对数据的描述和 2)对数据处理的描述1对数据的描述,即数据结构。数据结构是计算机学科的核心课 程之一,有许多专门著作论述,本课程就不再赘述。在C语言中,系统提供的数据结构,是以数据类型的形式出现的。2对数据处理的描述,即计算机算法。算法是为解决一个问题而 采取的方法和步骤,是程序的灵魂。为此,著名计算机科学家沃思( Nikiklaus Wirth)提出一个公式:数据结构

2、 + 算法 = 程序实际上,一个程序除了数据结构和算法外,还必须使用一种计算 机语言,并采用结构化方法来表示。2.1.1 程序的组成2.1 程序设计概述2.1.2 结构化程序设计方法1、含义:规范程序设计风格和程序结构。 2、思路:将复杂的问题分阶段处理 3、方法:自顶向下、逐步细化、模块化设计 、结构化编码 1、自然语言 2、流程图 3、伪代码 4、计算机语言2.1.3 算法的表示方法2)2),判断其是否为素数 输入n的值 i=2 当i 0 ) printf( “|x|=%d “, x ); else printf( “|x|=%d “, -x ); 计算机中数的表示及进制转换n数码、基与权

3、 数码:表示数的符号 基:数码的个数 (10 进制:10) 权:每一位所具有的值n数制 不同的基和权构成不同的数制2进制、8进制、10进制、16进制、2.2 数制之间的转换2.2.1 数制的基本概念数制基权表示数码特点10,10,10,十进制数0910逢十进一二进制数0122,2,2,逢二进一八进制数0788,8,8,逢八进一十六进制数09,AF,af1616,16,16,逢十六进一十进制:4956= 410+910 +510+610二进制:1011=12+02 +12+12十六进制:81AE=816+116 +1016+1416八进制:4275=48+28 +78+58n二进制、八进制、十六

4、进制转换成十进制方法:按权相加2.2.2 各种进制之间的转换n 十进制转换成二进制、八进制、十六进制方法:连续除以基,从低到高记录余数,直至商为0例 把十进制数459转换成十六进制数459162816 116 0(459)10=(1CB)161 C B 余11余12余 1续:各种进制之间的转换l 二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成 八进制l 八进制转换成二进制:用3位二进制数代替每一位八进制数例 (1101001)2=(001,101,001)2=(151)8例 (246)8=(010,100,110)2=(10100110)2000 0 001 1 010 2

5、 011 3 100 4 101 5 110 6 111 7n 二进制与八进制之间的转换续:各种进制之间的转换l 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0), 转换成十六进制l 十六进制转换成二进制:用4位二进制数代替每一位十六进制数例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1

6、010 A 1011 B 1100 C 1101 D 1110 E 1111 Fn二进制与十六进制之间的转换续:各种进制之间的转换n内存以字节为单元组成n每个字节有一个地址n一个字节一般由8个二进制位组成n每个二进位的值是0或1012345670 1 2 3 4 5 6 7 8 9 10.76432512.2.3 字节和位2.2.4 原码、反码与补码 n原码:最高位为符号位,其余各位为数值本身的绝对值n反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反n补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1正数的原码、反码、和补码是相同的;负数的原

7、码: 符号位为1,其余不变; (一个实例)反码:取反;补码:取反,再加1;负数补码转换成十进制数:最高位是符号位(不动),取反加1 b _above $123M.D.John3days #33 char$123ab一般用大写字母 是宏定义预处理命令,不是C语句 直接常量: 整型常量 请点击: 实型常量 请点击: 字符常量 请点击: 字符串常量 请点击:如 #define PRICE 30定义:程序运行时其值不能改变的量(即常数) 分类: 符号常量:用标识符代表常量 定义格式: #define 符号常量 常量例 符号常量举例(ch2_1.c)#define PRICE 30 main() int

8、 num,total;num=10;total=num*PRICE;printf(“total=%d“,total); 运行结果:total=3002.4.2常量= !=) 逻辑运算符:(! k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4 /k=3,j=4 /4 /3 /c=20,a=4 /c=15,a=42.6.3自增、自减运算符+ -作用:使变量值加1或减1 种类: 前置 +i, -i (先执行i+1或i-1,再使用i值) 后置

9、 i+,i- (先使用i值,再执行i+1或i-1)说明: + - 不能用于常量和表达式,如5+,(a+b)+ + - 结合方向: 自右向左对整型数使用 优先级:- + - -* / % -+ -(2) (3) (4)例 -i+ -(i+)i=3; printf(“%d”,-i+); /-3 例 j+k; (j+)+k;例 -i+i=3; printf(“%d”,-i+); 续:自增、自减运算符+ -n简单赋值运算符 符号: = 格式: 变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量n复合赋值运算符 种类:+= -= *= /= %= = = d=func();c=d+2;2.

10、6.4 赋值运算符和表达式 结合方向:自右向左 优先级: 14 左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换 成其左边变量的类型例 3=x-2*y;a+b=3; 例 float f; int i;i=10; f=i; 则 f=10.0例 int i; i=2.56; /结果i=2;例: a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)/表达式值为5,a,b,c值为5 / b=5;a=5 /表达式值11,c=6,a=11 /表达式值10,a=10,b=4,c=6 /表达式值5,

11、a=5,b=10,c=2简单赋值说明(1):结合方向:自右向左优先级: 12左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换 成其左边变量的类型例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)复合赋值说明:n形式:表达式1,表达式2,表达式nn结合性:从左向右n优先级: 15n逗号表达式的值:等于表达式n的值n用途:常用于循环for语句中例 a=3*5,a*4a=3*

12、5,a*4,a+5 例 x=(a=3,6*3)x=a=3,6*a 例 a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表达式值60 /a=15,表达式值20 /赋值表达式,表达式值18,x=18 /逗号表达式,表达式值18,x=3/1,2,3 /3,2,32.6.5 逗号运算符和表达式例: /*ch2_6.c*/ #include main() int x,y=7;float z=4;x=(y=y+6,y/z);printf(“x=%dn“,x); 运行结果:x=3n关系运算符 种类:= !

13、= 结合方向:自左向右 优先级别:= = !=优先级6(高)优先级7(低)例 ca+b /c(a+b)ab!=c /(ab)!=ca=bc /a=(bc)关系表达式的值:是逻辑值“真”或“假”,用1和0 表示例 int a=3,b=2,c=1,d,f;ab (ab)=cb+cbf=abc/表达式值1 /表达式值1/表达式值0 /d=1/f=02.6.6关系运算符和表达式例 若a=0; b=0.5; x=0.3;则 a278在C中是允许的,值为0例 int i=1, j=7,a; a=i+(j%4!=0); 则a=2例 a0 结果为A100 结果为10关系运算注意(1)例 注意区分“=”与“=”

14、int a=0,b=1;if(a=b) printf(“a equal to b”);elseprintf(“a not equal to b”);例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 可改写为:fabs(1.0/3.0*3.0-1.0)bb=5;!aaelseprintf(“%d”,b);printf(“%d”,ab?a:b);例 求 a+|b|printf(“a+|b|=%dn”,b0?a+b:a-b);expr1取expr2值取expr3值非0=0例 (a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=a x0,表达式值为axy?1:1.5 /xy ,值为1.0; xy ,值为1.52.6.8 条件运算符与表达式

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号