第三章数据类型运算符与表达式_第1页
第三章数据类型运算符与表达式_第2页
第三章数据类型运算符与表达式_第3页
第三章数据类型运算符与表达式_第4页
第三章数据类型运算符与表达式_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、IC-MSP V2.0第三章第三章数据类型、运算符与表达式C程序设计IC-MSP V2.0qC语言的基本元素q符号集(字符集) 大写字母 小写字母 阿拉伯数字 下划线 标点符号和运算符符号集符号集 、标识符、关键字、保留字标识符、关键字、保留字IC-MSP V2.0q 标识符标识符程序设计过程用到的各类元素的名字,叫标识符。例如常量、变量、函数名等。C语言规定标识符只能由字母、数字、下划线组成,并且只能由字母、下划线开头。如:abc,a12,x是合法的标识符,abc$,12a,x+y不是合法的标识符。注意:C语言是区分大小写的。 ANSI C没有规定标识符的长度,Turbo C允许32个字符I

2、C-MSP V2.0q关键字一些标识符被赋于特定的含义,如 main, int 等,叫关键字。 q保留字一些关键字,被明文规定不许挪作它用,叫保留字。 qC语言中,所有的关键字都是保留字,所以这两个词可以混用。q关键字都有固定的含义,不能用作其它。所有关键字都是小写的。IC-MSP V2.03.1 C的数据类型qC的数据类型有:1、基本类型:整型、字符型、实型(浮点型)、枚举型 2、构造类型:数组类型、结构体类型、共用体类型 3、指针类型 4、空类型IC-MSP V2.0例子main() short int i=255 ; short j=255; int a=65535; long int

3、b=1234567; long c=2345678; float d=2345.334; double float e=242423423423424.5; double g=2432422342.665656; printf(%d,%d,%ld,%f,i,j,b,e); IC-MSP V2.0常量与变量常量与变量q常量在程序运行时,其值不能被改变的量叫常量。如 5, 3.14159, 3.618 等。 q符号常量可以使用一个标识符表示常量,如:PI 表示 3.14159,RETIREMENT 表示退休年龄 60 等(C 语言中写作 #define PI 3.14159, #define RE

4、TIREMENT 60),这样的标识符叫符号常量,一般大写。IC-MSP V2.0常量与变量#define PI 3.1415926main() float r,s; r=20.0; s=PI*r*r; printf(“radius=%f,s=%f, r,s);优点优点含义清楚含义清楚一改全改一改全改IC-MSP V2.0变量q 变量在程序运行时,其值能被改变的量叫变量。q 程序运行时,计算机给每个变量分配一定量的存储空间。每个变量必须有一个类型,如整型、浮点型等,它指明给这个变量分配多大量的存储空间;每个变量还必须有一个名字,如 x, y 等,它指明是哪个变量;一般,一个变量还要有值,值放在

5、变量的存储空间内。 q 变量的定义方法 类型符 标识符IC-MSP V2.0注意q使用变量前需要定义q每一个变量被指定为一个确定的类型q程序运行中,这个变量的类型不能改变q对变量的定义,一般是放在一个函数开头部分的声名部分。IC-MSP V2.0整型常量q 十进制整型常量直接写数字,如:5,100 等;q 八进制整型常量数字前加 0,如:05,0100 等;q 十六进制整型常量数字加 0 x,如:0 x5,0 x100 等。 IC-MSP V2.0整型数据在内存中的存放形式0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 010的原码1111111111110101取反加1,得-10

6、的补码1111111111110110IC-MSP V2.0整型变量的分类q int:整型,整型变量表示整数。 q 在MS DOS上,每个整型变量分配 16 bit 存储空间。整型又分成两类,q 一类表示有符号整数,用 1 bit 表示符号,15 bit 表示数值,可表示数值范围为 -32768 至 32767。q 一类表示无符号整数,16 bit 都表示数值,可表示数值范围为 0 至 65535。数值都用二进制存储。例如:int a; unsigned int date; 等。 q 十进制整型常量直接写数字,如:5,100 等;八进制整型常量数字前加 0,如:05,0100 等;十六进制整型

7、常量数字加 0 x,如:0 x5,0 x100 等。 IC-MSP V2.0Short and longq short:短整型,也可写成 short int,在MS DOS上,与整型相同。 q long:长整型,也可写成 long int,表示较大的整数,在MS DOS上,每个长整型变量分配 32 bit 存储空间。长整型也分成两类,q 一类表示有符号整数,用 1 bit 表示符号,31 bit 表示数值,可表示数值范围为 -231 至 231-1。q 一类表示无符号整数,32 bit 都表示数值,可表示数值范围为 0 至 232-1。数值都用二进制存储。 q 例如:long int a; u

8、nsigned long date; 等。 q 整型常量的值若超过了整型数范围,会自动被认为是长整型常量;整型常量也可以后加L,强制置为长整型,如:5L,100L 等。 IC-MSP V2.0整型类型q有符号基本整型 signed intq无符号基本整型 unsigned intq有符号短整型 signed short intq无符号短整型 unsigned short intq有符号长整型 signed long int q无符号长整型 unsigned long intIC-MSP V2.0ANSI标准定义的整型类型IC-MSP V2.0有符号整型和无符号整型IC-MSP V2.0有符号整

9、型和无符号整型main() unsigned int i=65535; printf(unsigned i=%u,signed i=%d,i,i); getch();输出结果:unsigned i=65535,signed i=-1IC-MSP V2.0整型变量的定义 对变量的定义,一般是放在一个函数的开头部分的声明部分(也可以放在函数中某一分程序内,但作用域只限它所在的分程序)。IC-MSP V2.0例子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);结果:

10、a+u=22,b+u=-14IC-MSP V2.0整型数据的溢出main() int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b);运行结果:32767,32768IC-MSP V2.0整型常量的类型q整型常量的值若超过了整型数范围,会自动被认为是长整型常量;整型常量也可以后加L,强制置为长整型,如:5L,100L 等。 q注意:在C标准中并没有为各类数据规定占内存字节数,只要求LONG的数据长度不短于int型,short类型不长于int型IC-MSP V2.03.4 实型数据q 实数(real number)又称浮点数(floating-Point num

11、hr)。实数有两种表示形式:q (1)十进制小数形式。它由数字和小数点组成(注意必须有小数点).123、123.、123.0、0.0q (2)指数形式。123e3或123E3、e或E前面必须有数字,且e后面的指数必须为整数。 实型常量的表示方法IC-MSP V2.0实型常量的表示方法q 一个实数可以有多种指数表示形式。例如 123.456可以表示为 123456e0、12.3456e1、1.23456e2、0.123456e3、0.0123456e4、000123456e5等。q 把其中的1.23456e2称为“规范化的指数形式”,即在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能

12、有一位非零的数字。例如 2.3478e2、3.0999E5、6.46832e12都属于规范化的指数形式,而12.908e10、0.4578e3、756e0则不属于规范化的指数形式。q 一个实数在用指数形式输出时,是按规范化的指数形式输出的。例如,指定将实数568965按指数形式输出,必然输出568965e003,而不会是0.568965e004或56.8965e002。IC-MSP V2.0实型变量一个实型数据一般在内存中占4个字节(32位),按照指数形式存储。系统把一个实型数据分成小数部分和指数部分分别存放,小数部分采用规范化的指数方式表示。实型数据在内存中的存放形式IC-MSP V2.0f

13、loatq float:浮点型,近似表示实数,在MS DOS上,每个浮点型变量分配 32 bit 存储空间。浮点型都是有符号的,可表示数值范围分为三段:-1038 至 -10-38, 0, 10-38 至 1038。数值都先化成指数,再用二进制存储。 q 例如:float x, y; 等。 q 浮点型常量可以写成小数形式,如 3.14159,也可以写成指数形式:1.2E12 (表示 1.2*1012)。 IC-MSP V2.0doubleq double:双精度型,近似表示更大实数,在MS DOS上,每个浮点型变量分配 64 bit 存储空间。双精度型都是有符号的,可表示数值范围分为三段:-1

14、0308 至 -10-308, 0, 10-308 至 10308。数值都先化成指数,再用二进制存储。q 例如:double x, y; 等。 q 双精度型常量可以写成小数形式,如 3.14159,也可以写成指数形式:1.2E12 (表示1.2*1012)。 IC-MSP V2.0实型变量的分类float x,y;double z;long double t;IC-MSP V2.0实型数据的舍入误差main() float a,b; a=123456.789e5; b=a+20; printf(a=%f,b=%fn,a,b); a=1.0; b=1.0/3*3; printf(a=%f,b=%

15、fn,a,b); getch();运行结果:a=12345678848.000000,b=12345678848.000000a=1.000000,b=1.000000IC-MSP V2.0字符常量字符常量q 字符型常量写成A,t,65等形式。q 字符常量是用单引号括起来的一个字符 字符形式功能ASCII代码n换行10t横向跳格9b退格8r回车13f走纸换页12反斜杠字符92单引号39ddd8进制数表示的对应ASCII码字符xhh16进制数表示的对应ASCII码字符IC-MSP V2.0例子main() printf( ab ct derftgn); printf(htibbj k); pri

16、ntf(%c,101); printf(%c,x41); getch();IC-MSP V2.0字符变量字符变量q char ch;q char:字符型,表示一个字符,如A-Z,0-9,!,%等。在MS DOS上,每个字符型变量分配 8 bit(1 byte)存储空间。字符型变量用二进制存储字符的 ASCII 码值。例如:一个变量存储字符A,实际上是存储A的 ASCII 值:65。 char c1,c2; /定义字符型变量c1=A; c2=B; /变量赋值IC-MSP V2.0字符数据在内存中的存储形式及其使用方法q 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,

17、而是将该字符的相应的ASCll代码放到存储单元中。例如字符b的ASCll代码为97,b为98,在内存中变量c1、c2 的值如图3.8(a)所示。实际上是以二进制形式存放的,如图3.8(b)所示。IC-MSP V2.0例子:向字符变量赋以整数main() char c1,c2; c1=97; c2=98; printf(“c1=%c c2=%cn”,c1,c2); printf(“c1= %d c2=%dn”,c1,c2);运行结果:c1=a c2=bc1= 97 c2=98IC-MSP V2.0c1=a c2=bc3=A c4=B例子:大小写字母的转换main() char c1,c2; ch

18、ar c3,c4; c1=a; c2=b; c3=c1-32; c4=c2-32; printf(“c1=%c c2=%cn”,c1,c2); printf(“c3=%c c4=%cn”,c3,c4);IC-MSP V2.0字符数据与整型数据可以相互赋值main() int i; char c; i=a; c=97 printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i);输出结果:a,97a,97IC-MSP V2.0字符串常量q 字符串常量是一对双撇号括起来的字符序列。如, “How do you do.” ,“ CHINA”, “ a”, “ $123.45”

19、 都是字符串常量。可以输出一个字符串,如q printf(“How do you do”);q printf(“Hello World!”);IC-MSP V2.0注意:q 不要将字符常量与字符串常量混淆。a是字符常量, “ a”是字符串常量q 假设C被指定为字符变量: char c; c=a; 是正确的。而 c=“a”; 是错误的。q c=“CHINA” 也是错误的。不能把一个字符串赋给一个字符变量。q 应该向字符数组赋值: unsigned char Name=“BEIHANG;IC-MSP V2.0注意:q 在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C

20、规定以字符0作为字符串结束标志。0 是一个 ASCll码为 0的字符,从 ASCll代码表中可以看到 ASCll码为 0的字符是 “空操作字符”,即它不引起任何控制动作,也不是一个可显示的字符。如果有一个字符串”CHINA”,实际上在内存中是CHINA0“a”,实际上是2个字符:a0IC-MSP V2.03.6 变量赋初值q 在定义变量的同时,给变量赋初值,给被定义的部分变量赋初值。int a=3;float f=12.34;char c=Aint a,b,c=45;int a=3,b=2,c=1; int a=b=c=3; 错误q 初始化不是在编译阶段完成的,而是在程序运行时执行函数时赋值的

21、。 int a=3; int a; a=3;IC-MSP V2.03.7 各类数值型数据间的混和运算q 不同整型(包括int,short,long)和实型(包括float,double)数据可以混合运算。字符型数据可以与整型通用,因此,整型、实型、字符型数据间可以混合运算。q 10+a+1.5-8765.1234*bq 是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如图所示。IC-MSP V2.0算例int i;float f;double d;long e;10+a+i*f-d/e;IC-MSP V2.0C运算符简介IC-MSP V2.0算数运算符和算数表

22、达式q 一般的程序设计语言都提供了以下的算术运算符:q 加法 +减法 -乘法 * 除法 /求余 %q 前四种用于所有数据类型,最后一种只用于整型、长整型、字符型。 7%43 5/31 -5/3=-1 或 -5/3=-2(不一定)IC-MSP V2.0算术运算符算术运算符的的优先级优先级q 乘法、除法、求余运算符的优先级高于加法、减法,即:先乘、除、求余,后加、减。 q 算术运算符的结合方向为:“自左至右”。q 如果一个运算符的两侧的数据类型不同,先自动进行类型转换。q 强制类型转换:(类型名)(表达式) (double) a (int)(x+y) (float)(5%3) (int) x+yI

23、C-MSP V2.0q 例如若x为float型,则X%3不合法,必须将X强制转换,(int)x%3,强制类型转换运算优先于%运算。注意:在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。Eg:Main()float x;int I;X=3.6;i=(int)xPrintf(“x=%f,i=%d”,x,i);IC-MSP V2.0自增、自减运算符q i+ +iq 注:i+和+i略有不同,q 例如:a=i+; 是先将 i 的值赋与 a,i 再加 1,q a=+i; 是i先加1,再将 i的值赋给a。 q (1)自增、自减运算符只能用于变量,不能用于常量或表达式q (2)+和-的

24、结合方向是“自右至左”IC-MSP V2.0q#include stdio.hqmain()qqint i=3;qprintf(%d,-i+);q qIC-MSP V2.03.9 赋值运算符和赋值表达式q赋值运算符用于将一个数据传给一个变量。例如: int x; x = 5; 将值 5 传给变量 x。其中=号即赋值运算符。例如: int a,b; a = 5; b = 3; a = a+b; 将值 5 传给变量 a,值 3 传给变量 b,将 a+b 的值,也就是 8 传给变量 a。 q 含有赋值运算符的表达式称为赋值表达式,q 赋值表达式组成的语句称为赋值语句。 IC-MSP V2.0类型转换

25、q (1)实型数据赋给整型变量q (2)整型数据赋给单、双精度变量q (3)double赋给floatq (4)字符型赋给整型变量IC-MSP V2.0q (5)将int、short、long型数据赋给char型变量IC-MSP V2.0q (6)将带符号的整型数据(int)赋给long型变量,要进行符号扩展IC-MSP V2.0q (7)将unsigned int型数据赋给long int型变量 unsigned int a=65536; int b; b=a; printf(%d,b); -1IC-MSP V2.0q(8)将非unsigned型数据赋给长度相同的unsigned 型变量连同

26、符号位原样赋值。main() unsigned a;int b=-1;a=b;printf(%u,a);65536IC-MSP V2.0复合赋值运算符q C语言为提高效率,提供了一些特有的算术运算符:算术运算符 例子相当于+i+、+ii=i+1;- i-、-i i=i-1;+=x+=yx=x+y-= x-=y x=x-y*=x*=yx=x*y/= x/=yx=x/y IC-MSP V2.0逗号运算符和逗号表达式逗号运算符将两个表达式连接起来 35,68称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为表达式表达式1,表达式,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解

27、表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“35,68”的值为14。 求:a=3*5,a*4 的值?IC-MSP V2.0扩展逗号表达式的一般形式可以扩展为 表达式1,表达式2,表达式3,表达式n它的值为表达式n的值。IC-MSP V2.0习题q 1 若有说明语句:char c=72;则变量cA) 包含1个字符 B) 包含2个字符C) 包含3个字符 D) 说明不合法,c的值不确定2设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为A) int B) float C) double D) 不确定3在C语言中,char型数据在内存中的存储形式是A

28、) 补码 B) 反码 C) 原码 D) ASCII码4 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是 A) n=(n*100+0.5)/100.0 B) m=n*100+0.5,n=m/100.0 C) n=n*100+0.5/100.0 D) n=(n/100+0.5)*100.05 表达式18/4*sqrt(4.0)/8值的数据类型为A) int B) float C) double D) 不确定q6 设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为 A) 0-255 B) 0-32767 C) 065535 D)0-21474836477 设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为 A) float B) char C) int D) double8 若有以下定义,则能

温馨提示

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

评论

0/150

提交评论