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

下载本文档

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

文档简介

上午7时20分,第1页,C语言程序设计,信息与计算机学院 朱诚:,上午7时20分,第2页,第二章 数据类型、运算符与表达式,预备知识:什么程序?,程序就是指令的有序集合,对应着一系列的数据加工步骤,上午7时20分,第3页,第二章 数据类型、运算符与表达式,例:求2个整数的和,并将结果显示出来 (1)先准备2个整数 a=123,b=234; (2)计算 sum=a+b; (3)输出结果。 这是人脑的思维形式,计算机该怎么办?,(1)将第一个操作数送入内存单元; (2)将第二个操作数送入内存单元; (3)CPU从内存中取数进行加法运算 (4)将运算结果送入内存单元存储 (5)将结果输出到输出设备(如显示器),上午7时20分,第4页,第二章 数据类型、运算符与表达式,#include “stdio.h” main( ) int a, b, c, sum; a=123; /*步骤1:将第一个操作数送入内存单元a中*/ b=234; /*步骤2:将第一个操作数送入内存单元b中*/ sum=a+b; /*步骤3和4:求两数相加之和并送内存单元sum中*/ printf(“Sum is %d n ” , sum); /*步骤5:将结果输出到显示器上*/ ,上午7时20分,第5页,第二章 数据类型、运算符与表达式,一个程序实际上包含两个主要部分: 组织数据设计数据结构 对数据结构进行加工的过程设计算法 程序=数据结构+算法 程序=数据结构+算法+程序设计方法+编程语言,上午7时20分,第6页,第二章 数据类型、运算符与表达式,C语言的数据类型 数据结构指的是数据的组织形式 C语言的数据结构是以数据类型的形式出现的 数据类型决定: 1. 数据占内存字节数(内存空间大小) 2. 数据取值范围 3. 其上可进行的操作(运算),上午7时20分,第7页,第二章 数据类型、运算符与表达式,数 据 类 型,上午7时20分,第8页,2.2.1 常量 1、定义:在程序执行期间,其值不可改变的量称为常量 2、类型: 数值常量 例如:10,3 ,2.68 , a , hello 等 符号常量 即用一个符号代表一个常量 例如: #define PI 3.1415926 main( ) float r,l,s; r=2; l=2*PI*r; s=PI*r*r; printf(“l=%d, s=%d”, l,s); ,第二章 数据类型、运算符与表达式,1、含义清楚 2、方便修改,上午7时20分,第9页,第二章 数据类型、运算符与表达式,使用符号常量必须注意: 符号常量必须先定义后才能用它表示一个数值。 符号常量的值在其作用域内不能改变,也不能再被赋值。 符号常量名习惯用大写字母表示。,上午7时20分,第10页,第二章 数据类型、运算符与表达式,2.2.2 变量 1. 定义:程序执行期间值可以改变的量;它代表内存中特定的存储单元。 2.命名规则: 变量名由标识符表示,只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 例如:下列标识符中,不合法的变量名有: M.D.John , 12%gf , 1add , _ce36 ,age (每个变量分配 4个 字节),上午7时20分,第11页,第二章 数据类型、运算符与表达式,注意 * 选变量名时,要尽量做到“见名知意” 例如:name st_age xm nl class sum * 大、小写字母是不同的字符,C变量名习惯用小写字母表示。 * 建议变量名的长度不要超过8个字符。 * 变量必须强制定义,即“先定义、后使用”,上午7时20分,第12页,第二章 数据类型、运算符与表达式,2.3 整型数据 整型常量即整常数 C语言中整常数可以是十进制、八进制(0开头)、十六进制(0x开头) 整型数据在内存中是以二进制形式存放的。 整型变量 整型变量的基本类型符号是: int 在 int 前还可以加上修饰符号: short long signed unsigned,上午7时20分,第13页,第二章 数据类型、运算符与表达式,一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。 int a; /* 变量a 的数值范围: -2147483 6482147483647*/ unsigned int b; /* 变量b的数值范围:-21474836482147483647 */,上午7时20分,第14页,第二章 数据类型、运算符与表达式,整型变量的使用 定义: 例如: int a , b ; unsigned short x , y ; long e , f ; 整型数据的溢出: 例如: int a , b ; a = 32767 ; b=a+1 ; 那么 b=? 整型常量的类型,上午7时20分,第15页,第二章 数据类型、运算符与表达式,2.4 浮点型数据 浮点数就是实数 两种表示形式: 十进制小数形式: 0.123 、123.123 、 3.1415936 指数形式: 123e3 (123103 )、123E3 注意:E和e前必须有数字、e和E后面必须是整数 规范化的指数形式,上午7时20分,第16页,第二章 数据类型、运算符与表达式,浮点型变量 浮点数在内存中的存放形式:,符号位,小数部分,指数部分, 0.31415926 X 101,上午7时20分,第17页,第二章 数据类型、运算符与表达式,浮点型变量的分类: double:占8字节,提供1516位有效数字 float:占4字节,提供7位有效数字 Long double: 占10字节,提供1819位有效数字 浮点型数据的舍入误差,上午7时20分,第18页,第二章 数据类型、运算符与表达式,浮点型常量的类型: f2.456784523.65 类型后缀 f、F 表示常量是一个单精度型浮点数 l、L 表示常量是一个长双精度型浮点数 无任何后缀的浮点型常量视作双精度型,上午7时20分,第19页,第二章 数据类型、运算符与表达式,字符常量 定义:用单引号括起来的单个普通字符或转义字符. 字符常量的值:该字符的ASCII码值 转义字符:反斜线后面跟一个字符或一个代码值表示,如 a A ? n 101,上午7时20分,第20页,第二章 数据类型、运算符与表达式,例1 转义字符举例(ch3002.c,) main() printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Visual C+“); ,运行结果:(屏幕显示) I say:”How are you?” C Program Visual C+,例2 ch3003.c main() printf(“Yb=n”); ,运行结果: 屏幕显示:= 打印机输出:,上午7时20分,第21页,第二章 数据类型、运算符与表达式,字符变量 字符型变量用来存放一个字符值(对应的ASCII值) 字符变量的定义形式: char c1 , c2 ; / c1和c2的字符变量 c1=a; c2=$; / 对c1h和c2赋值 字符变量在内存中占一个字节空间 字符数据与整型数据可以互相赋值,上午7时20分,第22页,第二章 数据类型、运算符与表达式,字符数据使用方法 #include void main() char c1,c2; c1=97; c2=98; printf(“%c %c n”); printf(“%d %d n”); ,运行结果 a b 97 98,上午7时20分,第23页,第二章 数据类型、运算符与表达式,例子2.7 大小写字母转换 #include void main() char c1 ,c2 ; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c %c “,c1,c2); ,运行结果: A B,上午7时20分,第24页,第二章 数据类型、运算符与表达式,字符串常量 定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符串结束标志,例: char ch; ch=“A”;,上午7时20分,第25页,第二章 数据类型、运算符与表达式,2.6 变量赋 初值 程序中经常要在使用变量前预先对它们设置初始值 例如: int a = 123 ; float f = 3.1415926 ; char c = a ;,上午7时20分,第26页,第二章 数据类型、运算符与表达式,2.3 各类数值型数据间的混合运算 两种不同的数值型数据之间进行运算前,不同类型的数据要先转换成同一类型。可以避免数据溢出或运算精度下降。 转换形式: 隐式转换 (由系统自动进行) 显式转换 (强制类型转换) 隐式转换的转换规则: 精度小的向精度大的类型转换 取值范围小的向取值范围大类型转换 参看课本P32页图2-2 强制类型转换符 (类型) (double)(x+y) (int)(5*3.1415926),上午7时20分,第27页,第二章 数据类型、运算符与表达式,2.4.1 算术运算符和表达式(1) 算术运算符:(+ - * / % + -) 关系运算符:( = !=) 逻辑运算符:(! & |) 位运算符 :( | &) 赋值运算符:(= 及其扩展) 条件运算符:(? : )见P55页,上午7时20分,第28页,第二章 数据类型、运算符与表达式,2.4.1 算术运算符和表达式(1) 逗号运算符:( , ) 指针运算符:( * 和 &) 求字节数 :(sizeof) 强制类型转换:(类型) 分量运算符:( . 和 -) 下标运算符:( ) 其它 :( ( ) ),上午7时20分,第29页,第二章 数据类型、运算符与表达式,运算符简介: 模运算符 (求余数运算符) 1007 ? 运算中数据类型的隐式转换: int a=5 ; int b=3; a/b=? double a=5 ; int b=3 ; a/b=? 运算符的优先级和结合性: “左结合性” 参见附录C 建议:尽量使用()来直观表示运算的优先次序: 区别 a*b/c*d 与 (a*b)/(b*c),上午7时20分,第30页,自增、自减运算符 +i 和 -i (先改变 i 的值,然后用改变后的i值参与运算) i+ 和 i- (先使用 i 原来的值运算,运算完成后改变 i 的值) 假设 i=5比较: j=i+ 和 j=+i 两个语句 注意: +和 只能用于变量,不能用于常量和表达式。 -i+ 相当于 -(i+),第二章 数据类型、运算符与表达式,上午7时20分,第31页,第二章 数据类型、运算符与表达式,例 : j=3; 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=4,上午7时20分,第32页,第二章 数据类型、运算符与表达式,关系运算符和关系表达式,6种关系运算符 = = !=,高,低,算术运算符, = =,赋值运算符,= !=,上午7时20分,第33页,第二章 数据类型、运算符与表达式,例如: c a+b c (a+b) a = b=c a = ( b=c ) a = b = c +d a = ( b= (c+d) ),上午7时20分,第34页,第二章 数据类型、运算符与表达式,用关系运算符将两个表达式连接起来 (a+b) (c+d ) (a=3) x 注意区分等于(=)和赋值运算符(=) a=b a=b 关系表达式的值是逻辑值“真”或“假” C语言用整型表示逻辑值,“真”1、非零、 “假” 0 举例, a=3, b=2, c=1; d = ab; /* d=1 */ f = abc; /* f=(ab)c=0 */,上午7时20分,第35页,第二章 数据类型、运算符与表达式,逻辑运算符和逻辑表达式,3种逻辑运算符及优先级 & 逻辑与 | 逻辑或 ! 逻辑非,上午7时20分,第36页,第二章 数据类型、运算符与表达式,!a 若a为“真”,!a为“假” 若a为“假”,!a为“真” a&b 若a、b都为“真”,则a&b为“真” 若a、b不全为“真”,则a&b为“假” a|b 若a、b都为“假”,则a|b为“假” 若a、b不全为“假”,则a|b为“真”,上午7时20分,第37页,第二章 数据类型、运算符与表达式,运算符的优先级,上午7时20分,第38页,第二章 数据类型、运算符与表达式,上午7时20分,第39页,第二章 数据类型、运算符与表达式,逻辑表达式的值是逻辑值 用整型表示逻辑值 “真”1 ,“假”0 把一个表达式的值作为逻辑值使用 非零“真”,零“假” 这里的非零与零,包括整型、浮点型等 逻辑表达式中的运算符,只有会影响表达式求值时,才会执行 a&b&c 若a为“假”,则不再判断b和c a|b|c 若a为“真”,则不再判断b和c,上午7时20分,第40页,赋值运算符和表达式 简单赋值运算符 符号: = 格式: 变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量,第二章 数据类型、运算符与表达式,复合赋值运算符 种类:+= -= *= /= %= = = &= = |= 含义: exp1 op= exp2 exp1 = exp1 op exp2,x*=y+8,上午7时20分,第41页,第二章 数据类型、运算符与表达式,说明: 结合方向:自右向左 优先级: 14 左侧必须是变量,不能是常量或表达式,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,上午7时20分,第4

温馨提示

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

评论

0/150

提交评论