天津市大学软件园专升本c语言第二章数据类型、运算符与表达式.ppt_第1页
天津市大学软件园专升本c语言第二章数据类型、运算符与表达式.ppt_第2页
天津市大学软件园专升本c语言第二章数据类型、运算符与表达式.ppt_第3页
天津市大学软件园专升本c语言第二章数据类型、运算符与表达式.ppt_第4页
天津市大学软件园专升本c语言第二章数据类型、运算符与表达式.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计,教师:陈香凝,第四章 数据描述,C 的数据类型 常量与变量 不同类型数据间的转换 运算符和表达式,C 数 据 类 型,基本类型,构造类型,指针类型,空类型void,定义类型typedef,数值类型,字符类型char,枚举类型enum,整 型,浮点型,单精度型float,双精度型double,短整型short,长整型long,整型int,数组,结构体struct,共用体union,4.1 数据类型, 数据类型总表, 数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,4.2 常量与变量 一.标识符 1. 定义:用来标识变量、常量、函数等的字符序列 2. 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 (P365) 3. 长度:最长32个字符 4. 命名原则: 见名知意 不宜混淆 如I与1, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,二.常量 1.定义:程序运行时其值不能改变的量(即常数) 2.常量分类:,整型常量 (包括: 十进制、八进制、十六进制) 实数常量 符号常量 字符串常量,常量分类: 符号常量: 用标识符代表常量 定义格式: #define 符号常量 常量 如: #define PI 3.14 优点: 含义清楚,一改全改,注意问题: 一般用大写字母 是宏定义预处理命令,不是C语句,行末不能加分号 宏定义命令一般出现在函数外部,有效范围从宏定义之后的语句直到程序结束或解除宏定义语句 宏定义之后,程序中出现宏名字的地方,C系统自动替换为宏名字所代表的字符串,例2-1 符号常量举例(ch2_1.c) #include #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,运行结果:total=300,play,例: 0123 = ( )10 0x123 = ( )10 0Xff = ( )10, 整型常量(整常数) 三种形式: 十进制整数:由数字09和正负号表示. 如: 123,-456,0 八进制整数:由数字0开头,后跟数字07表示,可以有正负号. 如: 0123,-011 十六进制整数:由0x(或0X)开头,后跟09,af(或 AF)表示,可以有正负号. 如: 0x123,0Xff,-0x12,83,291,255,一个整数,其值在-3276832767范围内,则认为是int型,可赋值给int和long型 一个整数,如果超过上述范围,并在-21474836482147483647范围内,则认为是长整型,可赋值给long型 若C语言版本所分配给short int与 int型数据在内存中占的长度相同,则一个int型常量也是short int常量,可赋值给int或short int变量 一个整常量后面加一个字母U或u,表示unsigned int型常量, 如写-12345u,则先将012345转换成补码53191,然后按照无符号数存储 一个整常量后面加一个字母L或l,表示long int型常量,例如123l、324L等, 整型常量(整常数) 整型常量的类型, 实型常量(实数或浮点数) 二种形式: 十进制小数形式:(必须有小数点) 如: 0.123 , .123 , 123.0 , 0.0 , 123. 指数形式:(e或E之前必须有数字;后面的指数必须为整数) 如: 12.3e3 ,123E2 , 1.23e4 e-5 , 1.2E-3.5 规范化指数形式:在E之前的小数部分中,小数点左边有且仅有一位非零数字, 字符常量 定义:用西文单引号括起来的单个普通字符或转义字符.,如: a , A , ? , n , 101,字符常量的值:该字符的ASCII码值 (P364),如 A65, a97, 048 , n10,例: 101 -A 012 -n 376 - x61 -a 060 -0 483 -(),例: A-101-x41-65,转义字符: 反斜线后面跟一个字符或一个代码值表示,例2-2 转义字符举例(ch2_2.c) main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,运行结果:(屏幕显示) A B C I say:”How are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,运行结果: 屏幕显示:=,play,例2转义字符举例(ch2_2x.c) #include main() printf(“ab ct derftgn“); printf(“htibbj kn“); ,运行结果:(屏幕显示) f gde h j k,play,play,C语言程序设计 第一章 C语言概述,随堂练习: 1. 列四个选项中,不是C语言标识符的选项是 A.1define B. ge C. lude D. while 2.下面四个选项中,均是不合法的用户标识符的选项是 A. A B. float C. b-a D. _123 P_0 1a0 goto temp do _A int INT 3.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A. 必须为字母 B. 必须为下划线 C. 必须为字母或下划线 D. 可以是字母,数字和下划线中任一种字符,C语言程序设计 第一章 C语言概述,随堂练习: 10.下列四组选项中,均不是C语言关键字的选项是 A. define B. getc C. include D. while IF char scanf go type printf case pow 11.下面四个选项中,均是C语言关键字的选项是 A. auto B. switch C. signed D. if enum typedef union struct include continue scanf type,C语言程序设计 第一章 C语言概述,随堂练习: 17. 在C语言中,下列类型属于构造类型的是 整型 B. 字符型 C. 实型 D. 数组类型 20. 在C语言中,下列类型属于基本类型的是 A. 整型、实型、字符型 B. 空类型、枚举型 C. 结构体类型、实型 D. 数组类型、实型 21. 下列类型都不属于基本类型的是 A. 结构体类型和整型 B. 结构体类型、数组、指针 C. 实型 D. 空类型和枚举型,C语言程序设计 第一章 C语言概述,随堂练习: 22. C语言中最简单的数据类型包括 A. 整型,实型,逻辑型 B. 整型,实型,字符型 C. 整型,字符型,逻辑型 D. 整型,实型,逻辑型,字符型 24. C语言中不能用来表示整常数的进制是 十进制 B. 十六进制 C. 八进制 D. 二进制 41.C语言中的字符常量是以( )括起来的一个字符。 A.双引号 B.单引号 C. D.*,C语言程序设计 第一章 C语言概述,随堂练习: 42. 在C语言中,以下合法的字符常量是 084 B. x43 C. xg4 D. “0“ 44. 下面正确的字符常量是: “a“ B. C. W D. 45. 在C语言中,回车换行符是 A. n B. t C. v D.b,二.变量 1.概念:其值可以改变的量 2.变量的类型:,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件、软件环境不同而不同,上表以IBM PC机Turbo C为例:,3.变量定义的一般格式:, 存储类型 数据类型 变量1,变量2, ,变量n;,决定分配字节数 和数的表示范围,合法标识符,例: int a,b,c; float data;,4. 变量的初始化: 定义时赋初值,例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1;,编译程序根据变量定义为其分配指定字节的存单元,int a=1, b=-3,c;,1,-3,随机数,3,4,4,5,5,5.注意问题:,变量的使用:先定义,后使用,变量定义位置:一般放在函数开头,main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data); ,main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data); ,int student; stadent=19;,/Undefined symbol statent in function main,6.变量分类:, 整型变量 整型数据在内存中的存放形式:二进制形式补码表示, -10原码:,例: int i ; i=10 ;,0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,例: int i ; i=-10 ;,1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0, -10补码:,6.变量分类:, 整型变量 整型变量分类(P42-43),整型,有,无, 整型变量的定义:,int a, b ; unsigned short c,d ; long e,f ;,例2-3 (ch2_3.c) #include main() int a,b,c,d; unsigned u; a=12; b=-24; u=10; c=a+u; d=b+u; printf(“a+u=%d, b+u=%dn”,c,d); , 例:,运行结果: a+u=22, b+u=-14,play,例 (ch2_i.c) #include main() int a,b; a=32767; b=a+1; printf(“%d, %dn”,a,b); , 整型数据的溢出:,运行结果: 32767, -32768,play, 实型变量, 实型变量分类:, 实型数据在内存中的存放: + .314159 1 注:计算机中用二进制数表示小数部分以及用2的幂次表示指数部分, 实型变量的定义:,float x, y ; double z ; long double t ;,例 (ch2_f.c) #include main() float a,b; a=123456.789e5; b=a+20; printf ( “%f”, b); , 实型数据的舍入误差:,运行结果: 12345678848.000000,play, 字符变量, 字符型数据在内存中的存放:,字符数据以ASCLL码存储,字符变量占用一个字节(8 bit), 字符变量的定义:,char c1, c2 ;, 注意问题: 由于字符变量存放字符ASCII码值,因此字符型数据与整型数据间可进行算术运算 使用 printf 函数输出字符时, %c 输出字符形式; %d输出 ASCII 码值,例: char a, x, s; a=D; x=A+5; s=!+G,/* a=68; */,/* x=65+5; */,/* s=33+71; */,例题,例 (ch2_c1.c) #include main() char c1,c2; c1=97; c2=98; printf ( “%c %cn”,c1,c2); printf ( “%d %dn”,c1,c2); ,运行结果: a b 97 98,play,例 (ch2_3b.c) #include main() int a,b=322; float x,y=8.88; char c1=k,c2; a=y; x=b; a=c1; c2=b; printf ( “%d,%f,%d,%cn”,a,xa,c2); ,play, 字符串常量:, 定义:用西文双引号(“”)括起来的0个或多个字符序列,注意:没有字符串变量,用字符数组存放字符串,例 “abcd“ “M“ “ “abcn deft“ “123“, 字符串常量:, 存储:每个字符串尾自动加一个 0 作为字符串结束标志,例 字符串“hello”在内存中:,例 空串 “”在内存中:,0, 注意问题: 字符常量与字符串常量不同,例: char ch; ch=“A”;,例: char ch; ch=A;,2.3 不同类型数据间的转换 一.运算转换 整型、实型、字符型数据间可以混合运算 不同类型数据运算时先自动转换成同一类型,例: 10+a+1.5-8765.1234*b,如何进行运算?,2.3 不同类型数据间的转换,double,float,long,unsigned,int,char,short,低,高, 转换规则:,整形量按字符型量处理时, 只有低8未字节参与处理,二. 强制转换 1.一般形式:(类型名)(表达式) 注意:转换的类型名和表达式要用括号括起来,2.注意问题: 强制转换得到所需类型的中间变量,原变量类型不变,例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6,例题,例 2-5 (ch2_5.c) main() float x; int i; x=3.6; i=(int)x; printf(“x=%f, i=%d”,x,i); ,play,C语言程序设计 第一章 C语言概述,随堂练习: 65. 10+a+1.5-567.345/b的结果的数据类型是 long B. double C. int D. unsigned float 66. 以下结果为整数的表达式(设有int i;char c;float f;) A. i+f B. i*c C. c+f D. i+c+f 67. 设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为A. int B. float C. double D. 不确定,4.7 运算符和表达式, 学习运算符应掌握以下内容:,运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型,一.算术运算符和表达式 1.基本算术运算符:, 结合方向:从左向右 优先级: - * / % + - (2) (3) (4) 说明: “-” 为单目运算符时,右结合性 两整数相除,结果为整数 %要求两个运算量均为整型数据,+ - * / %,例 5/2 = -5/2.0 =,2,-2.5,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,(),1,-1,1,0,2.自增、自减运算符, 作用:使变量值加1或减1, 种类:,前置 +i, -i (先执行i+1或i-1,再使用i值),后置 i+,i- (先使用i值,再执行i+1或i-1),符号表示:+ + - -,例 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,2.自增、自减运算符,符号表示:+ + - -, 注意问题:,+ - 不能用于常量和表达式,如:5+,(a+b)+,+ - - 结合方向: 自右向左,优先级:- + - * / % + -,(2) (3) (4),例:-i+; i=3; printf(“%d”,-i+);, -(i+),/-3,二.赋值运算符和表达式,1. 简单赋值运算符,符号:= 格式:变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量,2. 复合赋值运算符,种类:+= -= *= /= %= = &= = |= 可表示为: op= 含义:exp1 op= exp2 exp1=exp1 op exp2,如:,x*=y+8,x=x*(y+8),例: a=3; d=func(); c=d+2;,3. 说明,结合方向:自右向左 优先级: 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=5) a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/表达式值为5,b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,例: a=12; a+=a-=a*a,/a=-264 等价于a=a+(a=a-(a*a),C语言程序设计 第一章 C语言概述,随堂练习: 69. 以下不正确的语句(设有int p,q)是 p*3; B. p/=q; C. p+3; D. p后,c的值为 A. 1.4 B. 1 C. 2. D. 2,三.逗号运算符和表达式,1. 形式: 表达式1, 表达式2, , 表达式n,2. 结合性: 从左向右,3. 优先级: 15,4. 逗号表达式的值:等于表达式n的值,5.用途:常用于循环for语句中,例 a=3*5,a*4 a=3*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,3,C语言程序设计 第一章 C语言概述,随堂练习: 146.以下程序的输出结果 main( ) int a; printf(“%dn“;(a

温馨提示

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

评论

0/150

提交评论