chap5_数据类型和表达式_第1页
chap5_数据类型和表达式_第2页
chap5_数据类型和表达式_第3页
chap5_数据类型和表达式_第4页
chap5_数据类型和表达式_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、Chap 5 数据类型和表达式数据类型和表达式 5.1 基本数据类型 5.2 常量和变量 5.3 数据的输入和输出5.4 类型转换5.5 表达式本章要点本章要点l基本数据类型l定义符号常量l表达式的求解C语言的数据类型语言的数据类型整型整型: int, long, 基本类型基本类型字符型字符型: char浮点型浮点型: float, double构造类型构造类型数组数组 结构结构 联合联合枚举枚举空类型空类型 void指针指针 5.1 基本数据类型基本数据类型l基本数据类型基本数据类型整型整型 int,long, short, unsigned, 字符型字符型 char浮点型浮点型 float

2、 ,double不同的整型不同的整型有符号有符号无符号无符号短整型短整型shortunsigned short普通整型普通整型intunsigned 长整型长整型long unsigned long基本类型的数据长度基本类型的数据长度l整型整型短整型短整型short:2B,即,即 16bits普通整型普通整型int、整型、整型long:4B,即,即 32bitsl实型实型float: 4Bdouble: 8B采用采用科学计数法科学计数法:123.45 1.2345e+02l字符型字符型char: 1B存放字符的存放字符的ASCII码(码(0127)048,A65, a 97/* 求某类型的长度

3、求某类型的长度 sizeof*/#includevoid main() printf(%dn, sizeof(int) );整型的取值范围整型的取值范围short 16位 -32768 32767 -215 215-1int 32位 -2147483648 2147483647 -231 231-1long 32位 -2147483648 2147483647 -231 231-1unsigned short 16位 0 65535 0 216-1unsigned 32位 0 4294967295 0 232-1unsigned long 32位 0 4294967295 0 232-111

4、2, 21nn有符号有符号整型:整型:无符号无符号整型:整型:0,21n字符型字符型charcharl字符具有数值特征字符具有数值特征A 65 0100 0001 l在在ASCII码码范围范围 0, 127以内,整型变量和以内,整型变量和字符变量的定义和赋值可以互换字符变量的定义和赋值可以互换 char c; c = A; 等价于等价于 c = 65; int i; i = 65; 等价于等价于 i = A;以单引号 为标志浮点浮点型型l单精度浮点型 floatl双精度浮点型 double 数据长度 数据精度 取值范围 (有效数字)float 4B 78位 (10-38 1038)double

5、 8B 1516位 (10308 10308 )数据精度和取值范围数据精度和取值范围l数据精度 与 取值范围是两个不同的概念:float x = 1234567.89;虽在取值范围内,但无法精确表达。float y = 1.2e55;精度要求不高,但超出取值范围(10-381038)。实际上实际上,x = 1234567.805.2.1 常量定义和使用 符号常量整型常量、实型常量、字符型常量5.2.2 变量 变量的定义和使用 5.2 常量与变量常量与变量5.2.1 常量常量常量的类型通常由书写格式决定123 (整型)4.56 (实型) A (字符型)符号常量符号常量:用一个标识符标识符代表一个

6、常量:PI :EPSl如何 定义符号常量?#define 符号符号 常量常量如: #define PI 3.1415926以单引号 为标志用大写字母大写字母例例5-1 球的表面积和体积球的表面积和体积#include #define PI 3.14void main( ) double r, s, v; scanf(%lf, &r); s=4.0*PI*r*r ; v=4.0/3.0*PI*r*r*r ; printf(s=%f, v=%fn, s, v); 末尾不加分号!末尾不加分号!3.14159想要提高精度,想要提高精度,怎么办?怎么办?整型常量整型常量(整数整数)l整数的表示:

7、三种数制整数的表示:三种数制1)十进制十进制:正、负号,正、负号,09,无前缀,无前缀例:例: 10,1232)八进制八进制:正、负号,正、负号,07,前缀为,前缀为0例:例: 010,01233)十六进制十六进制:正、负号,正、负号,09,a-f, A-F, 前缀为前缀为0 x,0X例:例:0 x10,0X123整数的表示整数的表示十进制八进制十六进制123 0173 0 x7b10 012 0XA l不能超出整型数据的取值范围l超出整型取值范围的整数,用来浮点型表示浮点型常量浮点型常量(实数实数)l实数的表示实数的表示1)浮点表示法浮点表示法0.123 123.4 12. .122)科学计

8、数法科学计数法-123e4 0.2e-1l实数常量实数常量 统一当作统一当作 double型型字符型常量字符型常量l字符常量:界定符为一对单引号a A 9 + $ ASCII字符集:列出了所有可用的字符(128个),各字符对应惟一的ASCII 码0-9: 4857A-Z:6590a-z:97122在输入和输出时无单引号!字符的数值特征字符的数值特征字符字符 实质上是一个实质上是一个0127 之间的之间的整数整数对字符进行运算对字符进行运算 对字符的对字符的ASCII 码进行运算码进行运算例如:例如:A 的的 ASCII 码是码是 65则:则:A+1=66,对应字符对应字符 B如何区分数字字符和

9、数字? 1 1C-A+a=?转转义义字字符符l反斜杠后跟一个字符 或 ASCII码值n 40 x41 所有字符都可以用转义字符表示无法输入、无法显无法输入、无法显示的字符示的字符5.2.2 变量变量在程序运行过程中,值可以改变的量。l变量必须 先定义,后使用l定义变量时要指定 数据类型、变量名l变量应该 先赋值,后引用l三要素:变量类型变量名 (一般使用一般使用小写小写字母字母)变量值1) 赋初值赋初值:在定义变量时对它赋值:在定义变量时对它赋值int a=5, b=3;2)赋值赋值表达式表达式:int a, b;a=5;b=3;3)输入输入:int a, b;printf(Input a a

10、nd b: );scanf(%d%d, &a, &b);变量的值变量的值小结与作业小结与作业l小结C的4种基本数据类型(包括多种整型)如何定义和使用符号常量?字符与字符串常量的区别?l作业:P117: 24判断题:1.变量名可使用字母、数字和部分特殊字符如*、?、:等2.C语言中字符串常量可与整数作加减运算3.C语言中整型数分为长整型、短整型和普通整型4.变量赋初值与赋值是一回事上讲回顾上讲回顾l基本数据类型(int, float, double, char)l整型的分类:短整型short、普通整型int、 长整型long有符号整型和无符号整型 (unsigned)l字符型也可

11、看作一种特殊的整数类型1和1的区别?l符号常量5.3.1 整型数据的输入和输出5.3.2 实型数据的输入和输出5.3.3 字符型数据的输入和输出 5.3 数数据的输入和输出据的输入和输出 5.3.1 整型数据的输入输出格式整型数据的输入输出格式十进制十进制八进制八进制十六进制十六进制int%d%o%xlong%ld%lo%lxunsinged%u%o%xunsinged long%lu%lo%lx例例5-3(1) 输出整型数据输出整型数据 # include void main( ) printf(%d, %o, %x n, 10, 10, 10); printf(%d, %d, %d n,

12、10, 010, 0 x10); printf(%d, %x n, 012, 012); 二进制补码二进制补码00101010, 12, a10, 8, 1610, a例例5-3(2) 输入整型数据输入整型数据# include void main( ) int a, b; printf(input a, b:); scanf(%o%d, &a, &b); printf(“%d, %dn, a, b); printf(%o, %dn, a, b); input a, b: 17 1715, 1717, 175.3.2 实型数据的输入和输出实型数据的输入和输出l输出输出 prin

13、tf( )float 和和double使用使用相同的相同的格式控制说明格式控制说明%f : 以以小数形式小数形式输出浮点数,保留输出浮点数,保留6位小数位小数%e: 以以指数形式指数形式输出输出l输入输入 scanf( )float:%f 或或%e double: %lf或或%le 实型数据输出示例实型数据输出示例# include void main( ) double x = 3.1415926; printf(%f, %en, x, x); printf(%5.3f, %5.2f, %.2fn, x, x, x); 共占共占5位位,保留保留3位小数,小数点占位小数,小数点占1位位3.14

14、1593, 3.14159e+003.142, 3.14, 3.14例5-4 实型数据输入输出示例实型数据输入输出示例假定假定float的精度为的精度为7位,位,double的精度为的精度为16位位 # include void main( ) float x; double y; printf(input x, y:n); scanf(%f%lf, &x, &y); printf(“x = %fn y = %f n, x, y);input x, y: 1234567890123.123456 1234567890123.123456x = 1234567954432.000

15、000y = 1234567890123.123540注意注意有效位数有效位数5.3.3 字符型数据输入输出字符型数据输入输出l通用函数:通用函数:scanf( )和和printf( ) %c - 输入输入/输出输出字符字符char ch;scanf(%c, &ch);printf(%c, ch);l专用函数:专用函数: getchar( )和和putchar( )char ch;ch = getchar( ); /输入一个字符输入一个字符putchar(ch); /输出一个字符输出一个字符【例5-5】 字符的输入输出# include void main( ) char ch1, c

16、h2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(#); putchar(ch2);abscanf(%c%c, &ch1, &ch2);printf(%c#%c, ch1, ch2);a#b例5-6 输出字符型数据# include void main( ) char ch = b; printf(%c,%dn, ch, ch); printf(%c,%dn, 98, 98); printf(%c,%dn, ch-1, ch-1); printf(%c,%dn, ch - a + A, ch - a + A ); /

17、* b的ASCII码为98 */b, 98b, 98a, 97小写字母小写字母大写字母大写字母: ch-a+AB, 98大写字母大写字母小写字母小写字母: ch-A+a字符的字符的+、- 运算运算l大、小写大、小写字母转换字母转换 b - a = B - A B = b - a + A z - a = Z - A z = Z - A + a m M ?l数字字符、数字数字字符、数字 的转换的转换9 - 0 = 9 - 0 9 = 9 + 0 , 9 = 9 - 08 8lM= m - a + Alm=M - A + a l8 - 0 = 8l8 + 0 =8大写字母大写字母= 小写字母小写字母

18、-a+A小写字母小写字母= 大写字母大写字母-A+a数字字符数字字符= 数字数字 + 0数字数字 = 数字字符数字字符 - 0如果运算中涉及不同类型的数据,要先转换为同一类型再运算。5.4.1 自动类型转换自动类型转换非赋值运算的类型转换赋值运算的类型转换5.4.2 强制类型转换强制类型转换5.4 类型转换类型转换自动类型转换(非赋值运算)自动类型转换(非赋值运算)A + 12 10.05 65 77 66.95高 double float unsigned long long unsigned unsigned short 低 int char, short自动类型转换(赋值运算)自动类型转

19、换(赋值运算)变量变量 表达式表达式l计算计算 右侧右侧表达式表达式的值的值l将将 右侧右侧表达式表达式的值赋给的值赋给 左侧左侧变量变量将右侧表达式的类型将右侧表达式的类型自动转换成自动转换成左侧变量的类型左侧变量的类型自动类型转换自动类型转换(赋值运算赋值运算)double x;x = 1;x = ?short a = 1000;char b = A;long c;c = a + b;c = ?int ai;ai = 2.56;ai = ?short bi;bi = 0 x12345678Lbi = ?5.4.2 强制类型转换强制类型转换强制类型转换运算符运算符(类型名类型名) 表达式表达

20、式(double)3(int)3.8(double)(5/2)(double)5/23.032.02.5括号不可少!括号不可少!例例5-7 强制类型转换示例强制类型转换示例# include void main( ) int i; double x; x = 3.8; i = (int) x; printf(x = %f, i = %d n, x, i); printf(double)(int)x = %fn, (double)(int)x); printf( x mod 3 = %dn, (int)x % 3); x = 3.800000, i = 3(double)(int)x = 3.0

21、00000 x mod 3=0内容小结内容小结l通用的输入输出函数通用的输入输出函数scanf() 和和 printf()格式控制说明符:格式控制说明符:l%d, %f, %lfl%u, %o, %x, %cl字符专用的输入输出函数字符专用的输入输出函数getchar()putchar()l类型转换类型转换l表达式的组成成分表达式的组成成分运算对象运算对象:常量、变量、函数:常量、变量、函数 运算符运算符:具有运算功能的符号:具有运算功能的符号算术表达式:算术表达式: i+赋值表达式赋值表达式:a= sin(1.0)关系表达式关系表达式:x=0逻辑表达式逻辑表达式:x=0 & xb?

22、a: b逗号表达式逗号表达式:a=1, b=2, c=3 5.5 运算符与表达式运算符与表达式 l表达式有一个确定的表达式有一个确定的类型类型和和值值类型类型:表达式中最高的数据类型:表达式中最高的数据类型求值求值:先考虑:先考虑优先级别优先级别,再考虑,再考虑结合方向结合方向l优先级别:优先级别: 15个个l方向:自左向右、自右向左方向:自左向右、自右向左l错误错误的表达式:的表达式:5.3 %23+5.5.1 算术表达式算术表达式4 4个单目:个单目: + - + -5 5个双目:个双目: + - * / % 注意事项:注意事项:1)整除整除/,针对整数,针对整数8/5 = 1,-8/5

23、= -12)模模(求余求余) % : 针对整型数据针对整型数据1%3 = 1,2%3 = 2, 3%3=0, 3)+ 和和 l单目:单目: +10 和和 10l双目:双目: x+10 和和 y 10自增自增+ 自减自减-int i;i+ii- -i共同点:使变量的值增共同点:使变量的值增1或减或减1+i i+ i=i+1-i i- i=i-1区别:区别:先先增增/减减后后使用使用 or 先先使用使用后后增增/减减i+:表达式的值等于表达式的值等于i增增1之前之前的值的值+i:表达式的值等于表达式的值等于i增增1之后之后的值的值表达式的值?表达式的值?变量的值?变量的值?自增运算和自减运算自增运

24、算和自减运算int n, m;n=2;m=n+;n=2;m=+n;n=3n=3m=2m=3自增、自减运算自增、自减运算+和和- 只能用于只能用于变量变量不能作用于常量或表达式不能作用于常量或表达式错误错误的例子的例子!+-a(a+b)+10+-(a-b)sqrt(x*x)-x+ -y+a+ba+ +ba+(+b)系统分隔原则:系统分隔原则:“ “尽量取大尽量取大” ”a+ +bl自增、自减运算的副作用自增、自减运算的副作用自增、自减运算自增、自减运算在不同的VC编译系统中相同的表达式因计算顺序不同导致计算结果不同int i=3,j;j= (i+) +(i+) +(i+);i=?j= ?或或 j

25、= 3+4+5j= 3+3+36?int i=3,j;i+; i+; i+;j= i+i+i;优先级优先级 、结合方向、结合方向单目单目 + - + -双目双目 * / %双目双目 + -高高低从右向左从右向左-5 + 3%2 (-5) + (3%2) 结果为结果为 -43 * 5 % 3 (3*5) % 3结果为结果为 0-i+ -(i+)优先级:结合方向:Why?从左向右从左向右5.5.2 赋值赋值表达式表达式l赋值运算符赋值运算符 = =x = 3*4优先级:较低,优先级:较低,结合性:结合性:从右向左从右向左x = y = 3 x = (y = 3)赋值赋值表达式表达式变量 表达式计算

26、表达式的值将表达式的值赋给变量 int n = 2; 赋初值 int n; double x, y;n = 3.14*2;赋值x = 10/4;赋值x = (y = 3);赋值赋值表达式的值等于变量的值复合赋值运算符复合赋值运算符l赋值运算符赋值运算符简单赋值简单赋值运算符运算符 =复合赋值复合赋值运算符运算符l复合算术赋值运算符复合算术赋值运算符 += -= *= /= %=l复合位赋值运算符复合位赋值运算符i += 2 等价于等价于 x *= y - 3i = i + 2x = x * (y-3) 5.5.3 关系表达式关系表达式l关系表达式的值关系表达式的值 :1(真),(真), 0(假

27、)(假)x y x y x = y x != yl优先级优先级 算术运算符算术运算符 = = != 赋值运算符赋值运算符l结合方向:结合方向:从左向右从左向右a b = cd = a bch a + 1 d = a + b c3 = x b)= cd = (a b)ch (a + 1)d = (a + b) c)(3 = x) b = cld = a blch a + 1ld = a + b clb - 1 = a != cl3 = x = 3 & x = a & ch = A & ch = 3 & x = 3) & (x = a & ch = A & ch 0) ? x+2 : x*x;if ( x0 ) y=x+2;else y=x*x; x+2 x0y = x2 x=0结合方向:自右向左5.5.6 逗号逗号表达式表达式表达式表达式1, 表达式表达式2, ,表达式表达式n依次计算依次计算 表达式、表达式、表达式、表达式、表达式、表达式n,并将并将表达式表达式n 作为作为逗号表达式逗号表达式的值的值.int a, b,

温馨提示

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

评论

0/150

提交评论