数据类型运算符和表达式zlh.ppt_第1页
数据类型运算符和表达式zlh.ppt_第2页
数据类型运算符和表达式zlh.ppt_第3页
数据类型运算符和表达式zlh.ppt_第4页
数据类型运算符和表达式zlh.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

VIP免费下载

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

文档简介

高级语言程序设计,计算机基础教研室,第2章 数据类型、运算符与表达式,C语言大学实用教程,南京邮电大学计算机学院 计算机基础教研室,3,本章作业,作业本:P4546页:2.3 课堂练习或直接做在书上: P45页2.1、2.2,4,内容提要,C语言源程序的结构; 基本数据类型; 常量和变量; 标识符命名; 常用运算符和表达式; 运算符的优先级与结合性,5,例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相加之和*/ ,标识符号:字符(字母或者数字 等)组成的序列。 ( ) , ; “ /* */ # + = include int return printf scanf main x y sum Add a b 0,6,C语言源程序结构,C语言源程序由一个或多个函数组成,必须有且只能有一个main( )函数 函数应当先定义,然后再被调用 函数的定义:由函数首部和函数体两部分组成 函数首部:函数返回值类型 函数名(形式参数类型 形式参数名,) 函数体:一对 括起的若干条语句组成,每条语句以分号结束。 程序中还可有注释:在一对/* */中间的内容 源程序中大小写字母有区别!,7,2.2 C程序常见符号分类,关键字(Keyword) 又称为保留字,C语言中预先规定的具有固定含义的一些单词 int,return等 标识符(Identifier) 系统预定义标识符,main,printf 等 用户自定义标识符,Add, x, y 等 运算符(Operator) 34种,详见附录2 分隔符(Separator) 空格、回车/换行、逗号等 其它符号 大花括号“”和“”通常用于标识函数体或者一个语句块 “/*”和“*/”是程序注释所需的定界符 数据(Data) 变量(Variable) 、常量(Constant),8,标识符命名,变量名、函数名、常量名 由英文字母、数字和下划线组成,大小写敏感 不可以是数字开头 直观,见名知意,便于记忆和阅读 最好使用英文单词或其组合 切忌使用汉语拼音 下划线和大小写通常用来增强可读性 variablename variable_name variableName 不允许使用关键字作为标识符的名字 返回 int, float, for, while, if等 某些功能的变量采用习惯命名 如:for语句所采用的循环变量习惯用i, j, k 最好不要使用系统已经提供的标识符名字 fabs、sin、cos、main、printf、scanf等,Windows 风格,请采用,UNIX 风格,9,例,不合法 2a s# C$ char 合法的,但不推荐 xyz xuehao fabs sqrt 符合语法与习惯 ID sum average _var boxLength 课堂练习: P45页 2.1,10,2.3 数据类型(Data Type),数据为什么要区分类型? 不同类型的数据代表不同的 数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类,11,2.3 数据类型(Data Type),12,基本数据类型,整型(int) 用来表示整数。 整型本身也有多种类型。按类型不同在VC环境下占2个或4个字节。 浮点型(float、 double) 用来表示实数。 单精度浮点数,在VC环境下占4个字节。 双精度浮点数,在VC环境下占8个字节。 字符型(char) 用来表示字符,一般是1个字节长。 可以表示256个字符。 枚举型(enum):请自学!,13,数据类型修饰符,short/long short int,短整数,一般2个字节长。通常简写为short。 long int,长整数,一般是4个字节长。通常简写为long。 long double,长双精度(高精度)浮点数。 signed/unsigned signed用来修饰char、int,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略 unsigned用来修饰char、int,说明他们是无符号的整数(正整数和0),14,加修饰符的常见类型,整型 signed short int short signed int int signed long int long unsigned short int unsigned int unsigned long int 实型 float double long double 字符型 signed char char unsigned char,15,2.4 常量(const),在程序中保持固定类型和固定值的数据称为常量。 整型常量 实型常量 字符型常量 字符串常量 宏常量 枚举常量,16,整型常量,例题Example01_int.c 十进制:18,-31 八进制在前面加上数字0:023,057 十六进制在前面加上0x或者0X:0x1a,0XA long int型常量后跟l或L:-456l,123456L unsigned int型常量后跟u或U :30 u,256 U unsigned long int型常量后跟lu,lU, Lu或LU :30 lu 补充:数制,17,整型常量在内存中的表示,整型常量在内存中以补码形式存储表示,这样可以将减法运算统一为加上一个负数。 整数有原码、反码、补码表示 原码:最高位:0表示正,1表示负数,其余各位是绝对值的二进制表示,板书举例:11、-11 补码:最高位:0表示正,1表示负数,其余各位:绝对值的二进制表示,再全部取反,最后加1,板书举例:11、-11,18,实型常量,例题Example02_double.c 十进制小数形式:必须有小数点,左右均为纯数字序列或为空, 123.45、456.78、.12、34. 指数形式:e左边是合法的整数或小数形式的实数,e右边必须是一个整数,1e-2、4.5e3 实型常量缺省为double型 若要强调是float型的常量,必须在数据后面加 F或f后缀: 1.25F,-367.23f,19,字符(Character)常量,字符常量有两种 单引号括起来的一个字符a、A、5、%、 等。 用开头的转义字符。 每个字符都有一个值 在计算机中,每个字符都有一个0255之间的数值与之对应。如A对应 65、a对应97等。 这个值称为ASCII值,可从ASCII表(课本附录D)中查出。 计算机存储、读取字符,以ASCII值进行。,20,字符常量,用开头的转义字符 一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示 例题Example03_char.c,21,字符串(string)常量,用双引号括住的由0个或多个字符组成的字符序列 “I am a string“ “表示空字符串 字符串以0表示结束 转义字符也可以在字符串中使用 双引号只作为字符串开始和结束的标志 除注释外,是唯一可以出现中文的地方 区别:“5“、5、5与5.0 “5“是一个字符串。 5是一个字符。 5是一个整型数。 5.0是一个实数,默认是double型。,22,宏常量,宏常量也称为符号常量,是指用一个标志符号代替的一个常量。 格式: #define 标识符 字符串 编译器在对程序进行编译时,在程序中遇见该标识符,用字符串替代。 课本P23例2.2。,23,例2.2 :计算圆的周长和面积,运行结果: area = 88.247263 circumference = 33.300854,#include #define PI 3.14159 #define R 5.3 main( ) printf(“area = %fn“, PI * R * R); printf(“circumference = %fn“, 2 * PI * R); ,24,宏常量,宏常量一般采用大写。 宏定义是一种编译预处理命令,而不是一条语句,所以行末不需要加分号。,25,为什么定义宏常量?,例题Example04_const.c 如果不定义宏常量,直接使用常数,有什么后果? 程序的可读性变差 修改麻烦 在需要用常量的地方,不建议直接使用常数,而通常是用宏定义来定义一个符号常量使用。,26,枚举常量,自阅,27,是指用一组固定的符号和规则来表示数值的方法。 按进位的方法进行计数,成为进位计数制。,数制的概念,28,进位计数制,用数字符号排列成数位,按由低位到高位的进位方式来表示数的方法叫进位计数制,也称为计数制或进位制。在日常生活中,人们大量使用着各种不同的进制,如最普遍的十进制,还有六十进制(如分秒的计算),十二进制(如十二个月为一年)等。计算机中数的表示则采用二进制。,29,无论使用何种进制,都包括三个要素: 基数、数符和位权。,基数 进位计数制允许选用的基本符号个数称为基数。 J进制的基数就为J,包含J个不同的符号。 每个数位计满J后就向高位进1,也就是“逢J进1”。 如最常用的十进制数,基数为10,使用0、1、2、3、4、5、6、7、8、9共10个不同数字来表示所有数,每位满10则向高位进1。,30,基数、数符和位权,数符 进位计数制允许选用的基本符号称为数符。 J进制有J个不同的数符。 十进制的数符为: 0,1,2,3,4,5,6,7,8,9 二进制数的数符为:0和1。 八进制的数符为: 0、1、2、3、4、5、6、7 十六进制的数符为: 0、1、2、3、4、5、6、7、8、9、A(a)、B(b)、C( c )、D(d)、E(e)、F(f) 注意:数符不一定只能是数字,十以上进制的就要用其它符号作数符了,如:十六进制中的字母A至F分别表示该位上从10到15的值。,31,基数、数符和位权,位权 一个符号处在数的不同位时,它所代表的数值是不同的。每个符号所表示的数值等于该符号值乘以一个与数码所在位置有关的常数,这个常数就叫位权,也称权。位权的大小是以基数为底,数符所在位置的序号为指数的整数次幂。 例 用数符、基数、位权表示十进制数234.18。 234.18=2102+3101+4100+110-1+810-2,32,不同进制之间的等值转换,二进制、八进制、十六进制与十进制之间的转换 (1) R进制数转换为十进制数 每一位的数符乘以位权,最后求和。 234.1Q=282+381+480+18-1=156.125 1B.2H=1161+11160+216-1=27.125 1011.11B=123+022+121+120 +12-1+12-2 =11.75 (2) 十进制数转换为R进制 十进制数转换为R进制时,整数部分与小数部分 换算算法不同,需要分别计算。,33,十进制整数转换成R进制的整数 “除R取余”法,计算到商为0时停止,例如: 2 68 余 数 2 34 0 低位 2 17 0 2 8 1 2 4 0 2 2 0 2 1 0 0 1 高位 所以 681010001002,不同进位计数制间的转换 十进制 R 进制,34,不同进位计数制间的转换 十进制 R 进制,十进制小数转换成R进制小数 “乘 R 取整”法,计算至小数点后为0止,例如: 高位 0.31252 = 0 .625 0.625 2 = 1 .25 0.25 2 = 0 .5 0.5 2 = 1 .0 所以 0.312510 = 0.01012 思考:十进制小数一定能精确转换成R进制小数吗?,35,不同进位计数制间的转换 二、八、十六进制的相互转换,每位八进制数相当于三位二进制数 每位十六进制数相当于四位二进制数 (1011010.10)2=(001 011 010 .100)2 =(132.4)8 (1011010.10)2=(0101 1010 .1000)2 =(5A.8)16 (F7)16(1111 0111)2(11110111)2 返回,36,2.5 变量,在程序中可以改变、可以赋值的量称为变量。 变量要求先定义后使用。 变量的定义: 类型关键字 变量名1,变量名2, ; 例如: short max; long sum; double score,average; char str;,37,变量的初始化,可以同时定义多个变量,定义的同时也可以对变量进行初始化。 int x,y=10,z; 表示定义了三个整型变量x、y、z,并且y被初始化为10,变量x和z只作了定义,无确定值。 注意: int x; x=5; 与int x=5;概念是不一样的!,38,变量的属性,定义了一个变量以后,它具有四个属性:名称、类型名、地址、值。 例如 int x = 5; 如果不初始化,也有一个值,是个随即值。对程序有隐患。,39,程序设计时如何定义变量,根据求解问题确定变量的类型。(字符型、整型、实型) 估计变量的取值,防止溢出。例题Example05_scope.c。 给变量取名字,符合标识符命名规范(课本P20)。,40,Const修饰的变量,用const修饰定义的变量为只读变量, 特别提醒:教材P26认为是常量这一概念有误。 所谓只读变量,就是指程序中将来只可以引用该变量的值,而不能再修改它。例: const float pi = 3.1425926; pi = 3.14; /*错,不能改变pi的值*/ 因此,在需要定义符号常量时,用宏定义!,41,变量所占存储空间大小,同一种类型的变量在不同的机器、不同的编译器下所占存储空间大小可能不同。 long int型数据的范围不一定比int 型的数据大;long double型数据的范围不一定比double 型的数据大。 如果不熟悉,最好使用sizeof()运算符来确定。,42,sizeof()的使用,它是一个C语言的关键字,并不是函数。 通常通过如下两种形式使用 sizeof(变量名) sizeof(类型) 求出的结果为变量所属类型或者类型占用的字节数。课本P27例2.3。,43,例2.3,#include int 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); printf(“ long double %dn“, sizeof(long double); return 0; ,44,char型与int型数据,int型数据在内存中以二进制形式存储。char型数据在内存中也以其ASCII码的二进制形式存储。 因此,在ASCII码的取值范围内,char型数据和int型数据可以自由转换。 例题例2-4.c,将字符以字符型和整型输出 例题Example06_char and int.c 例题例2-5.c,大小写字符的转换,45,实型数据是不精确的,float型数据提供7位有效数字 double型数据提供16位有效数字 课本P50例2.6,46,例2.6,运行结果: 1234567936.000000 1234567890.000000,#include main( ) float a; double b; a = 123456.789e4; b = 123456.789e4; printf(“%fn%fn“,a,b); ,47,2.6 运算符,算术运算符 关系运算符 逻辑运算符 赋值运算符 自增自减运算符 强制类型转换运算符 位运算符 逗号运算符,48,算术运算符,双目:+,-,*,/ ,% 加、减、乘、除、求余运算运算 四则混合运算中,先算乘除,后算加减, 按从左向右的顺序计算,左结合 单目:- ,指正负数互取反,优先级高于双目,常用的标准数学函数(需要#include ),49,算术运算符,注意: 两个整数相除的结果仍为整数。 6 / 4 = 1 6.0 / 4 = 1.5 %是求余运算,要求参与运算的两个数都是整数,结果的正负号与第一操作数相同 12 % 7 = 5 一些复杂的数学运算需要使用系统提供的函数,注意表达式在C语言中与数学中的表示是不完全一样的。 (课本P32),老师板书举例,50,关系运算符,关系运算符一共有六个 = b 1 a b c 0,51,逻辑运算符,逻辑运算也被称为布尔(Boolean)运算 求反! ( !a );如果a是0,结果非0;如果a是非0,结果是0 并不改变a的值 与运算&:第一运算对象若为0,则停止运算 a & b当且仅当两者都为真,则结果为真 ( a b & b c);a大于b,并且b大于c 或运算|:第一运算对象若为1,则停止运算 a | b只要两者中有一个为真,结果就为真 ( a b | b c); a大于b,或者b大于c 优先级:! 高于 & 高于 | |,52,实例,ch是英文大写字母 (ch = A) & (ch = Z) 判断某一年year是否是闰年的条件是满足下列两个条件之一: 能被4整除,但不能被100整除; 能被400整除; (year % 4 = 0) & (year % 100 != 0) | (year % 400 = 0),53,赋值运算符,简单的赋值运算 变量名 = 表达式 a = 2 b = 3 多重赋值运算 变量1 = 变量2 = 变量3 = = 变量n = 表达式 表达式的值 1+2+3 若a = 3 b = 2 c = 1,求 abc的值,有什么结论? a = b = 2,54,复合赋值运算,复合赋值运算 i += 2 等价于 i = i + 2 n *= m+2 等价于 n = n * (m + 2) +=、-=、*=、/=,%=等运算符都可以按此种方式处理 课本P45习题2.2(7),55,增一和减一运算符,x+,x-,+x,-x +x; 等价于 x = x + 1; x+; 等价于 x = x + 1; -x; 等价于 x = x - 1; x-; 等价于 x = x - 1; +在变量前面与在变量后面的区别: int n = 3,m;,56,增一和减一运算符,57,类型强转(Casting),强制类型转换,就是把表达式的结果从一种类型转换为用户指定的类型。 格式: (类型)表达式 例题Example07_casting.c 课本P39例2.7,58,逗号运算符,表达式1, 表达式2, , 表达式n 逗号表达式可以把多个表达式连接在一起。 计算时从左至右依次计算,同时最右边表达式的值是整个逗号表达式的值。 m = 3, n = m + 4 x = a = 3, 6 * a x = (a = 3, 6 * a),59,优先级,(

温馨提示

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

评论

0/150

提交评论