C语言教程第2章数据类型、运算符与表达式.ppt_第1页
C语言教程第2章数据类型、运算符与表达式.ppt_第2页
C语言教程第2章数据类型、运算符与表达式.ppt_第3页
C语言教程第2章数据类型、运算符与表达式.ppt_第4页
C语言教程第2章数据类型、运算符与表达式.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

自然语言层次,程序设计语言层次,第2章 数据类型、运算符与表达式,第2章 数据类型、运算符与表达式,本章主要教学内容,基本数据类型 常量和变量 标识符命名 常用运算符和表达式 运算符的优先级与结合性,2.1 一个简单的C程序例子,#include /*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值: 整型数a和b之和 */ int Add(int a, int b) return (a + b); /*主函数*/ main() int x, y, sum = 0; printf(“Input two integers:“); scanf(“%d%d“, /*输出x和y相加之和*/ ,一个C语言程序必须有且仅有一个用main作为名子的函数。,一个C程序可以包含零到多个用户自定义函数,可以调用系统提供的库函数,调用前要相应的关文件包含到文件中。,1.C程序是由函数构成的,2.函数由函数首部和函数体两部分组成,3.C程序书写格式与规则,分号结束 用“/*”和“*/”包含起来的内容为注释,2.2 C程序常见标识符号分类,1.关键字 2.标识符 3.运算符 4.分隔符 5.其它符号 6.数据,关键字 C语言规定有固定含义的单词 例:int return const (详见附录B),标识符 预定义和用户自定义标识符 例:预定义标识符 main、printf 用户自定义标识符 x,y,add,运算符 丰富,共34种(13类):附录C 例:算术运算符:+、-、*、/、% 关系运算符:,=, 增1和减1运算符:+、-,用户自定义标识符命名规则 英文字母、数字和下划线; 标识符有长度限制 “见名知意” 标识符区分大小写 尽可能与开发工具风格一致,分隔符 空格,回车/换行,逗号等 例:int a,b,c; 其它符号 大花括号“”和“”通常用于标识函数体或者一个语句块 “/*”和“*/”是程序注释所需的定界符 数据 常量和变量,由英文字母、数字和下划线组成,大小写敏感 不可以是数字开头 直观,见名知意,便于记忆和阅读 最好使用英文单词或其组合 切忌使用汉语拼音 下划线和大小写通常用来增强可读性 variablename variable_name variableName 不允许使用关键字作为标识符的名字 int, float, for, while, if等 某些功能的变量采用习惯命名 如:for语句所采用的循环变量习惯用i, j, k,Windows 风格,UNIX 风格,标识符的命名规则,2.3 数据类型,数据为什么要区分类型?,不同类型的数据代表不同的: 数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类,从基本数据类型到抽象数据类型 无数据类型 基本数据类型 构造数据类型 抽象数据类型,数据类型,基本类型 构造类型 指针类型 空类型,整型 实型 字符型 枚举类型,基本整型 长整型 短整型 无符号整型,单精度 双精度,数组类型 结构体类型 共用体类型,2.3 数据类型,基本数据类型,常量 变量,在计算机中存储的数据,按存储的性质 分,可分为:,2.4 常量,定义:常量是一种在程序中保持固定类型和固定值的数据。,类型 整型常量 实型常量 字符常量 字符串常量 枚举常量,2.4 常量,常 量,整型常量 18、-31 长整型常量 123l、123L、123456l、123456L 无符号型常量 123u、 123U 浮点常量 十进制小数形式 123.45、456.78 指数形式 1e-2、4.5e3 单精度实型常量 123.45f、 456.78F、1e-2f、4.5e3F 长双精度型常量 123.45l、 456.78L、1e-2l、4.5e3L,2.4 常量,八进制与十六进制常量,以数字“0”开始的整型常数是八进制数 022、-037 010和10大小不一样 因为八进制并不常用,所以此种表示法比较少见 以“0x”或者“0X”开始的整型常数是十六进制 AF和af用来表示十进制的1015 十六进制的形式比较常用,尤其在进行位一级的控制的时候 0x12、-0x1F, -0x1f,2.4 常量,字符常量,由单引号括起来的一个字符。,字符常数的表示方法 a,A,5,%,$ 单引号内只能有一个字符,除非用“”开头 就是一个普通整数,也可以参与各种数学运算 每个字符具有一个0255之间的数值,可从ASCII表查出 注意:5和整数5的区别 字符的数学运算在密码学内用得比较多,字符常量,转义字符 一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示(P23表2-2),2.4 常量,字符串常量,用双引号括起来的0个或多个字符组成的字符序列 “I am a string“ “表示空字符串 转义字符也可以在字符串中使用 引号只作为字符串开始和结束的标志 C语言内部用0表示字符串的结束 除注释外,是唯一可以出现中文的地方 “x“和x是不同的 里定义了一系列专门的字符串处理函数,2.4 常量,也称符号常量,是指用一个标识符号代表一个常量。(一般用大写字母表示),宏常量,宏定义的一般形式: #define 标识符 字符串,#include #define PI 3.14159 #define R 5.3 Main() printf(“area =%fn“,PI*R*R); ,宏定义,无分号,printf(“area =%fn “ ,3.14159*5.3*5.3);,宏替换,2.4 常量,枚举常量,一一列举,当某些量仅由有限个数据值组成通常用此类型。其描述的是一组整型值的集合。,枚举常量的定义举例1: enum responseno,yes,none; enum response answer;,response 为枚举数据类型 answer为枚举类型的变量,枚举标记,可省略,枚举常量的定义举例2: enum no,yes,none answer;,省略枚举标记,枚举常量的定义举例3: enum response no=-1,yes=1,none=0;,定义时明确设置每一常量值,注意: 枚举标记后面的变量中的每一个符号代表的是一个整数值,这些符号只是一个整数的值的名子,不是字符串。,2.4 常量,从程序来窥其一斑 enum weeks MON, TUE, WED, THU, FRI, SAT, SUN; enum weeks today; enum response no, yes, none; enum response answer; today = TUE; answer = yes; if (answer = yes) printf(“Today is Tuesday.n“); else printf(“Today is NOT Tuesday.n“);,枚举常量,2.4 常量,const 常量,用const修饰定义的变量为常量 const float pi = 3.1425926; 常量只能在定义时赋值,然后不能再改变其值 常数、 const常量、宏常量和枚举常量,都可以用来表示一个永远不会改变的数 前者不建议直接使用,而用后三者代替,2.4 常量,2.5 变 量,变量是在程序执行过程中可以改变、可以赋值的量。 在程序中每一个变量都有一个名子即变量名,程序对该变量访问(存入、读取)都是通过变量名进行的。 每个变量在使用之前声明,2.5 变量,变量声明与初始化,变量定义语句形式1: 类型关键字 变量名1,变量名2,;,变量定义语句形式2(定义的同时赋初值) 类型关键字 变量名1=常量1,变量名2=常量2,;,变量名是由用户定义的标识符,用于标识内存中一个具体的存储单元,其中存放的是数据称为变量的值。,float a,b,c; int sum;,int sum=0; float a=89.12;,2.5 变量,变量声明与初始化,使用变量的基本原则 变量必须先定义,后使用 所有变量必须在第一条可执行语句前定义 声明的顺序无关紧要 一条声明语句可声明若干个同类型的变量 声明变量,是初始化变量的最好时机 不被初始化的变量,其值为危险的随机数! char esc = a; int i = 1; int sum = 0; float eps = 1.0e-5;,2.5 变量,使用变量时的注意事项,1. 先定义后使用 2. 注意区分变量名和变量值 3. int型变量隐含为有符号型的 4. 变量所占存储空间的大小不能想当然。,#include main() printf(“Data type Number of bytesn“); printf(“- -n“); printf(“char %dn“, sizeof(char); printf(“int %dn“, sizeof(int); printf(“short int %dn“, sizeof(short); printf(“long int %dn“, sizeof(long); printf(“float %dn“, sizeof(float); printf(“double %dn“, sizeof(double); ,2.5 变量,5.注意实型数据内存存储格式,6.注意char型与int型数据之间的关系,#include main() char ch = b; ch = b - 32; printf(“%c, %dn“, ch, ch); ,运行结果:B,66,ch = b - (a - A) ;,2.5 变量,7.注意实型变量数据的舍入误差,float型数据提供7位有效数字 double型数据提供16位有效数字 使用不当导致舍入误差,#include main() float a; double b; a = 123456.789e4; b = 123456.789e4; printf(“%fn%fn“,a,b); ,运行结果: 1234567936.000000 1234567890.000000,2.6 常用运算符及表达式,算术运算符,+,-,*,/,% 加、减、乘、除、求余运算 四则混合运算中,先算乘除,后算加减, 按从左向右的顺序计算,左结合,常用的标准数学函数,#include ,算术运算的运算规则,1.运算的优先顺序为先*、/、%,后+、-,同等优先级从左到右运算。,举例:18*5/9 5/9*18,2.两个类型相同的操作数,运算结果类型也相同。,举例:5/9*8 2.5*8.0,2.6 常用运算符及表达式,3.两个类型不同的操作数,运算结果类型与其中类型较高的类型相同。,举例:5.0/9 * 18 2.5*8,4.求余运算的运算结果其值为相除所得余数,而符号与被除数的符号相同。,举例:-135=-3 13%(-5)=3,算术运算的运算规则,2.6 常用运算符及表达式,2.6 常用运算符及表达式,算术表达式,用算术运算符将运算对象连接起来的式子称为算术表达式。运算对象可以常量、变量和函数。,举例,a+b,c+d,a+b/c+d,(a+b)/(c+d),a+b,2c,(a+b)/2c,(a+b)/(2c),(a+b)/(2*c),cos45+2ex,cos(45)+2*exp(x),cos(3.14*45/180) +2*exp(x),2.6 常用运算符及表达式,关系运算符,,=,、= 优先于 = 、!=,关系运算符,例:,设a=3、b=2、c=1,计算下列表达式的值,(1) ab,(2) d=ab,(3) (ab)=c,(4) abc,1,1,1,0,注意= =和=,比较下列程序段:,2.6 常用运算符及表达式,逻辑运算也被称为布尔(Boolean)运算 &(与运算) ( a b & b c);a大于b,并且b大于c |(或运算) ( a b | b c); a大于b,或者b大于c !(求反) ( !a );如果a是0,结果非0;如果a是非0,结果是0 并不改变a的值,逻辑运算符与逻辑表达式,2.6 常用运算符及表达式,2.6 常用运算符及表达式,实 例,ch是英文大写字母 (ch = A) & (ch = Z) 判断某一年year是否是闰年的条件是满足下列两个条件之一: 能被4整除,但不能被100整除; 能被400整除; (year % 4 = 0) & (year % 100 != 0) | (year % 400 = 0),2.6 常用运算符及表达式,赋值运算符与赋值表达式,1、作用:将一个数据赋予一个变量,右结合,如:,A=B=C=5,A=(B=(C=5),2、“=”号两端数据类型不同时的转换规则,= : 赋值号,(1)整型=实型 舍去小数部分,(2)实型=整型 值不变,依浮点形式存放,(3)整型=字符型 值放低8位,高8位为0,(4)字符型=整型 仅将低8位存入,2.6 常用运算符及表达式,复合赋值运算符,可用的10种复合赋值运算:,如:,A+=3,X*=y+8,A=A+3,X=X*(y+8),练习:设a=12 计算 a + = a - = a * a,-264,2.6 常用运算符及表达式,类型转换(赋值),在进行赋值操作时,会发生类型转换 将取值范围小的类型转为取值范围大的类型是安全的 反之是不安全的 如果大类型的值在小类型能容纳的范围之内,则平安无事 但是,浮点数转为整数,会丢失小数部分,非四舍五入 反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关。避免如此使用,类型转换(自动),2.6 常用运算符及表达式,同种数据类型的运算结果,还是该类型 不同种数据类型的运算结果,是两种类型中取值范围更大的那种 long double double float long int short char 把数据赋值给另外一种类型变量也会发生自动类型转换 从小到大,顺利转换 从大到小,可能丢失信息(好的编译器会发出警告),2.6 常用运算符及表达式,类型转换(强制),可以把表达式的值硬性转为任意类型。,一般形式: (类型)表达式,#include main() int m = 5; printf(“m / 2=%dn“, m/2); printf(“(float) (m / 2) = %fn“, (float) (m / 2); printf(“(float) m / 2 = %fn“, (float) m / 2); printf(“m = %dn“, m); ,增1和减1运算符,2.6 常用运算符及表达式,形式:n+,n-,+n,-n +让参与运算的变量加1,-让参与运算的变量减1 作为后缀运算符时,先取n的值,然后加/减1 作为前缀运算符时,先加/减1,然后取n的值 m = n+; 等价于 m=n; n+; m = +n; 等价于 n+; m=n;,2.6 常用运算符及表达式,增1和减1运算符,例:写出执行后x,y的值 int x,y,i=10; x=+i; y=i;,int x,y,i=10; x=i+; y=i;,x=11 y=11,x=10 y=11,2.6 常用运算符及表达式,增1和减1运算符(说明),(1)仅用于变量,不可用于常量或表达式。,(2)注意其结合性。(采用右结合),(3)常用于循环控制变量使用。,如:,-i+ 则为 -(i+),i+j 则为 (i+)+j,(4)良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次加1或者减1运算,2.6 常用运算符及表达式,& 按位与运算 | 按位或运算 按位异或运算,

温馨提示

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

评论

0/150

提交评论