C语言第三章变量名、数据类型、运算符和表达式.ppt_第1页
C语言第三章变量名、数据类型、运算符和表达式.ppt_第2页
C语言第三章变量名、数据类型、运算符和表达式.ppt_第3页
C语言第三章变量名、数据类型、运算符和表达式.ppt_第4页
C语言第三章变量名、数据类型、运算符和表达式.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 主讲教师:* 个人主页:* Date 1 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 教材:C语言程序设计(C99版) 陈良银 游洪跃 李旭伟 主编 李志蜀 唐宁九 李 涛 主审 清华大学出版社 2006年9月出版 Date 2 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 本书内容 第1章 基础知识 第2章 C语言的基本要素 第3章 变量名、数据类型、运算符和表达式 第4章 C程序基本控制结构 第5章 函数 第6章 数组和指针 第7章 递归 第8章 结构、联合、位运算和枚举类型 第9章 预处理命令 第10章 文件 第11章 高级话题 第12章 C89 Vs C99 实验 (待安排) Date 3 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 常量类型 本章主要内容 ARM Vector Table FIQ IRQ (Reserved) Data Abort Prefetch Abort Software Interrupt Undefined Instruction Reset 0x1C 0x18 0x14 0x10 0x0C 0x08 0x04 0x00 1 1 3 3 2 2 基本数据类型 C语言的变量命名 4 4 变量类型 5 5 表达式、运算符及其优先级 6 6 求值顺序、类型转换 Date 4 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 本章的节本要求 本变量定义部分定义了程序中可能用到的 变量,以及变量的数据类型、变量的名字、 甚至还可能设定了变量的初值。 而变量的数据类型则表明了变量在内存中 所占据的内存单元字节数、其取值范围、以 及可以作用于该变量的运算符。 C程序运算符限定了参与运算的操作数类型 ,以及程序对参与运算的操作数所作的操作 。 表达式则用运算符将变量、常量和函数名 等连接起来,以产生一个新的值( 表达式都是 有值的,即表达式运算的结果)。这些概念性 的问题是本章的主题。 Date 5 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.1 C语言的变量命名 C程序操作的基本对象是变量和常量。 变量名可由C语言字符集根据相关规则组合 而成 . 语言字符包括字母( 含“_”)、数字、空格 、标点和特殊字符等。 字母:大、小写字母az各26个。 数字:09共10个。 键盘符号:键盘上所使用的各种符号,共 33个。 转移字符:转移字符由“反斜杠字符( )”开 始后跟单个字符或若干字符组成 何为变量名? Date 6 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 空白符 空格符、制表符、换行符等统称为空 白符 . 空白符只在字符常量和字符串常量中 起作用。 在其它地方出现时,只起间隔作用, 程序编译时对它们忽略不计。 空白符的作用 Date 7 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.1.2关键字 关键字是由语言规定的具有特定意 义的单词,也称为保留字。 关键字不可作用变量名 Date 8 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 表3.1 C语言的关键字 autobreakcasecharconstcontinuedefault do double else enum extern float for goto if int long registe r return short signed static sizof struct switch typedef union unsigned void volatil e while restrictinline_Imagin ary _Comple x _Bool 最后一行是C99增加的5个 Date 9 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.1.3 变量命名 第一原则,变量的名字( 变量名也是标 识符)只能由字母和数字组成,且变量名 的第一个字符必须是字母。 第二原则,尽量不要使用下划线作为变 量的第一个字母。因为许多系统库函数 常常使用下划线作为库函数命名的首字 母。 第三原则,“见名知意”,也就是名字 要能够表达其意义,这是变量命名的又 一基本要求。 名字自含性 Date 10 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.2 C语言的基本数据类型及其大小 C89有5种基本数据类型:char(字符型 )、int(整型)、float(浮点型)、double(双 精度型)、void(空类型)。在C99中还增加 了以下三种基本类型:_Bool、 _Complex、_Imagimary。 float和double的精确格式依赖于系统 的具体实现。但是标准C规定了其最小 表示范围是1E37 到1E+37。 Date 11 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 基本类型可用以下修饰词修饰:signed (有符号类型)、unsigned(无符号类 型)、long(长整型)、short(短整型 )、long long(长长整型,仅C99)。 int缺省是signed的,而char缺省一般 是unsigned的。 long long仅C99具有。 Date 12 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 C语言的基本数据类型 类型名类型关键字 最小字节大小最小数值范围 字符型char(一般缺省为无符号 型) 1-128127(注:随系统而异,有的不能取负) 无符号字符型unsigned char 10255 有符号字符型signed char 1-128127 基本整型int(缺省为有符号) 2或4 -3276832767或 -2,147,483,648 2,147,483,647 无符号整型unsigned int 2或4065535或0 4,294,967,295 有符号整型signed int 2或4 -3276832767或 -2,147,483,648 2,147,483,647 短整型short int 2-3276832767 无符号短整型unsigned short int 2065535 有符号短整型signed short int 2-3276832767 长整型long int 4-2,147,483,648 2,147,483,647 有符号长整型signed long int 4-2,147,483,648 2,147,483,647 无符号长整型unsigned long int 40 4,294,967,295 长长 整型long long int 8-263 263 - 1 (C99新添加) 无符号长长 整型unsigned long long int 80 264 - 1 (C99新添加) 单精度实型float 4字节(32位)3/4E-383/4E+38( 6位精度) 双精度实型double 8字节(64位)1/7E-3081/7E+308( 10位精度) 长双精度long double 10字节(80位)1E-37 to 1E+37 ( 10位精度) Date 13 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.3 常量及其类型 每一种基本类型都有常量。常量就是 其值保持不变的量 。 在C语言中的数值常量,在编译时一般 会处理为机器指令的一部分。所以它不 会在动态数据存储区占据位置,它位于 程序区。 有的系统,也将部分常量分配到静态 数据存储区中,比如字符串常量,一般 就分配在静态数据存储区 。 常量可能位于程序区。 Date 14 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 常量可以独立使用,也可以用于表达 式。这样的表达式可以在编译期间求值 ,而不是在运行期间求值,常量表达式 可用于常量能够出现的任何地方,比如 : #define MAXLINE 1000/* 定义 了一个宏,宏名代表字符串1000 */ char longestMAXLINE1; /* 用常 量表达式定义了一个数组,实际上是 10001 */ Date 15 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.3.1 字符常量 字符常量就是其值保持不变的字符,它实 际就是一个整数,在书写时用单引号括起来 ,比如:A。 最常用的就是ASCII编码字符集。 有些字符可以用字符和字符串通过转义字 符来表示,比如:n( 换行) 。 一个字节大小的任意字符都可以通过ddd 来表示,这里的ddd是13位八进制数字( 0 7);或者通过xhh来表示,这里hh是12位 十六进制数字( 09,af,AF)。 101 X4 1 Date 16 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 表3.3 常用的转义字符及其含义 转义 字符转义 字符的意义ASCII代码 a鸣铃7 b退格8 t横向跳到下一制表位置9 n回车换 行10 v纵向跳到下一制表位置11 f走纸换页12 r回车不换行13 ”双引号符34 单引号符39 ?问号标记63 反斜线符“92 ddd13位八进制数所代表的字符 xhh12位十六进制数所代表的字符 Date 17 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.3.2 整型常量 象1234这样的整数是常量,而且是一个int 型( 整型)常量。常量的数据类型通过其书写 形式来区分。 一个long型常量在书写时以l或者L结尾,比 如:1234L。 无符号整型常量在书写形式上结尾带有u或 U。而后缀为ul或者UL的常量则是一个无符 号长整型( unsigned long)常量。 整型常量可以用十进制、八进制或者十六 进制表示。 以貌取人 Date 18 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 以0(零)开头的整型常量是八进制表示 。 以0x或者0X开头的整型常量是十六进 制表示。 比如:十进制30可以表示为0x1e或者 0X1E( 十六进制)。 其余的为10进制常量。 比如:123、345等 012、0101;01A7(对吗?) Date 19 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 图3.2 整型常量0XFUL在内存中的表示 X、F、U、L分别表示什么意思? Date 20 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.3.3 实型常量 浮点型常量包含了一个小数点( 比如: 123.4)或者一个指数( 比如:1e-2)或者既 包含小数点又包含指数( 1.2e-3)。 没有后缀的浮点型常量都是double类 型。 浮点常量自动是double型、 浮点型变量也是吗? Date 21 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.3.4 字符串常量 字符串常量是用双引号括起来的零个 或者多个字符序列,通常简称为字符串 。比如: “I am a student.“ “/* 空字符串*/ “四川大学国家级示范性计算机( 软件) 学院“ 末尾有0哟! Date 22 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 “hello“ “, “ “world!“ /* 连接时将双引号之间的空格舍弃 */ 等价于: “hello, world!“ 自动连接,很有用哟! Date 23 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 例题3.1 求字符串的长度 int StrLen(char s ) int i = 0; while (si != 0) i+; return i; 在标准库函数 中有求字符串 长度的函数 strlen( ). Date 24 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 图3.3 字符串内存单元的操作过程及其表示 Date 25 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 图3.4 字符串常量和字符常量的内存分配 a在内存中的表示:a “a“在内存中的表示:a0 为何多这0呀? 有必要吗? Date 26 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 *3.3.5 枚举常量 还有一种常量叫做枚举常量( enumeration constant),枚举常量是关 于常量整数值的一个列表,也叫枚举元 素,它是在定义枚举类型时所罗列的一 些符号。比如: enum boolean false, true ; Date 27 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 *3.3.6 使用const限定的常量 在变量定义时,可以使用const限定词将其 限定为常量。 可以认为使用const修饰的量是一个常量, 而使用#define定义的只是一个宏名。所以 const限定词会增加程序的安全性。 const double PI =3.1415926535897932384626433832795028841 971693993751058209749445923; const char CUE = “Please Input a word: “; 有名字,有类型,在数据区。 Date 28 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 /* const限制表示函数中不可以修改数组s中的内容 */ int StrLen(const char s ) int i = 0; while (si != 0) i+; return i; 表示s数组中的内 容不可变。 Date 29 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 与const相对应的还有volatile限定词。 volatile限定词告诉编译器,变量的值 可能会被程序以外的不确定因素修改。 比如:操作系统的时钟程序可能通过一 个外部变量来保持系统时间。 随时可能被修改,对它:“变 量未写,其值不变”的假定是 错误的。 Date 30 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.4 变量类型及其定义 C语言的所有变量在使用以前都必须定 义。变量定义语句规定了变量的数据类 型,从而也限定了变量的可能取值范围 。 int top, bottom, step; char ch, cArray 100; 必须先定义,后使用。 Date 31 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.4.1基本数据类型变量及其定义 1. 字符类型变量及其定义 char ch; unsigned char ch2; signed char ch3 ; char代表字符数据类型,其定义的ch 就是一个字符数据类型变量,在内存中 只占1个字节,可以保存1个字符。 1字节8位 Date 32 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 图3.5 char型变量的表示范围 最高位是符号位,其余数值位 Date 33 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 2. 整型类型变量及其定义 int i; int表示整型数据类型。i是整型变量, 在内存中可能占据2个字节也可能占据4 个字节,随编译环境不同而异。 short int sCount; int iCount; long int lCount; TC中2字节;VC+中4字节。 Date 34 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 图3.6 short型和long型变量 标准C规定:short=16位; long=32位; Date 35 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3. 实型类型变量及其定义 实型数据分为float单精度实型、 double双精度实型和long double长双精 度实型。 float:单精度浮点型数据。在内存中 占据4个字节。 double:双精度浮点型数据。在内存 中占据8个字节。 long double:长双精度实型( 扩展双精 度实型)变量,占据80位,10个字节。 Date 36 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.4.2 变量的初始化 变量也可以在定义它时初始化。在定 义变量时,如果在变量名后面跟上赋值 符号( =)和表达式( 也叫初始化算子),那 么就表示在定义变量的同时给它赋了一 个初始值。比如: char ch = n; int i = 0; int iCount = MAXLINE+1; float f = 1.19e-5; 定义时赋值 Date 37 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.5 运算符和表达式 3.5.1 表达式和表达式的值 表达式由数据和运算符构成,数据可 以是变量、常量和函数返回值。 a=b=c=c+,c+5 整个表达式的意义? 但c=c+可行吗?有待探索 Date 38 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.5.2 赋值运算符、赋值表达式和赋值语句 “=”是赋值运算符,它的意思是将右边 表达式的值赋值给左边变量。“=”号左边 只能是变量,不能是表达式或常量;而 等号右边可以是表达式,也可以是变量 或常量。 所谓语句就是一个能够表达完整意思 的句子结构。 要注意C语言的“=”(赋值运算符)与数 学方程中的“=”( 等于)的意义是完全不同 的 . Date 39 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.5.3 算术运算符及其表达式 算术运算符包括一元运算符和二元运 算符两种。二元算术运算符有:+、-、* 、/( 整除)和%( 取余模运算符)。一 元算术运算符有“+”和“-”等。 “/”运算符可以作用于整型数据也可以 作用于实型数据。 例题3.2 算术运算符及其运算结果: 意义不同? Date 40 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 /* i=1, c1=A,e2=2,f=10.2,*/ i = i / c1; /* i = 1 */ printf(“%dn“,i); /* 输出1 */ i = c1 / e2; /* i = 32, 因为c1=65,e2=2 */ printf(“%dn“,i); /* 输出32 */ f = 100 / f; /* 将100转换为100.0再除以10.2 */ printf(“%fn“,f); /* 输出9.803922 */ i = c1 % 2; /* i = 1 */ /* i = f % i; */ /* 出错。实型数据不能用于% */ printf(“%dn“,i); /* 输出1 */ f = 3 / 2;/* 算术表达式3/2的值为1,1赋值给f转换为1.0 */ printf(“%fn“,f); /* 输出1.000000, */ Date 41 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 例题3.3 判断闰年和非闰年 if (year%4 = 0 else printf(“%d is not a leap year.n“, year); 判断闰年 Date 42 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.5.4 自增和自减算术运算符及其表达式 if (ch = n) +iCount;/* iCount自增1 */ 或者 i = iCount+; 在这里前缀、后缀 自增均可。 Date 43 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 例题3.4 隐藏从键盘输入的密码串中的所有 数字,以*取代每一个数字。 if ( si=0 Date 61 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 例题3.6 位运算符的作用 Date 62 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.5.10 复合赋值运算符及其表达式 还有一种赋值运算符,叫做复合赋值 运算符。 象上述i = i + 4这样的表达式,其左边 的变量立即在右边重复,可以写成压缩 的形式: i += 4 这里“+=”也视为一种运算符,它叫做 复合赋值运算符。 适用于大部分运算符 Date 63 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 假设variable是变量,而expression是 表达式,则复合赋值运算符表达式如下 : variable op= expression /* 注意:variable不可是表达式,只能 是变量 */ 它等价于: variable = variable op (expression) 注意这里的( ) Date 64 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 例题3.7 计算从键盘输入的实数中正数的个数 int IsNegative(float x) if (fabs(x) =0 ? 1 : -1; 如何判断实数 与0的关系? Date 65 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 iArray iArray i3+i4 + iArray i1 += 2 iArray iArray i3+i4 + iArray i1 = iArray iArray i3+i4 + iArray i1 +2 符合赋值运算符 的存在意义! Date 66 主编: 陈良银 游洪跃 李旭伟 四川大学计算机学院 C语言程序设计(C99版) 清华大学出版社 第三章 3.6 运算符的优先级和求值顺序 多数运算符具有左结合性; 一元运算符、三目运算符、赋值运算 符等具有右结合性。 运算符的求值顺序、优先级、结 合性是完全不同的三个概念。 Date 67

温馨提示

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

评论

0/150

提交评论