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

下载本文档

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

文档简介

数据类型运算符与表达式1第1页,课件共51页,创作于2023年2月本章目标:C语言的基本符号C语言的数据类型运算符和表达式数据类型转换自增,自减运算2第2页,课件共51页,创作于2023年2月C语言的基本符号C语言的基本词汇表有下列几部分:数字:10个(0~9)。英文字母:大、小写各26个(A~Z,a~z)。下划线字符“_”(用来构成标识符)。运算符:是指为表达程序基本操作使用的一些符号;关键字:是指为表达程序功能使用的一些英文单词或单词缩写。3第3页,课件共51页,创作于2023年2月标识符定义:

程序中用来为符号常量、变量、函数、数组、类型、文件命名的有效字符序列称为标识符。命名规则:1只能由字母、数字和下划线组成。2第一个字符必须为字母或下划线。3不能使用关键字。4区分大小写字符。5

ANSIC没有规定标识符的长度,各个编译系统允许的标识符的长度(字符个数)不同。4第4页,课件共51页,创作于2023年2月常量定义:常量又称为常数,是在程序运行过程中其值不能被改变的量,常量的类型是由本身隐含决定的。举例:25、0、-13为整型常量;

-55.23、0.57、3.8e3为实型常量;

‘B’,‘9’为字符型常量。符号常量:

在C语言中,经常使用一个标识符来代表一个常量。也就是给常量命名,称为符号常量。

5第5页,课件共51页,创作于2023年2月[例]阅读程序。#definePI3.1415926/*宏定义*/#include<stdio.h>voidmain(){ floatr=18.5,area,length;area=PI*r*r;length=2*PI*r; printf("area=%6.2f,length=%6.2f",area,length);}符号常量几点说明:程序中用宏定义的方法定义标识符PI代表常量;符号常量名一般用大写字符;符号常量的值在有效范围内不能改变,也不能再被赋值;使用符号常量可以做到“含义清楚”、“一改全改”,从而提高程序的可读性,方便程序的修改。6第6页,课件共51页,创作于2023年2月变量

1.变量的基本概念定义:在程序运行过程中其值可以改变的量称为变量。变量具有三个属性:变量名:选择一个标识符,给变量取一个名字称为变量名,变量名的命名规则与标识符完全相同。变量值:

是对应变量名的存储单元所存放的具体的数值。变量的数据类型:是指变量可以存储的数据的类型,也就是变量值的数据类型。7第7页,课件共51页,创作于2023年2月

2.变量的定义变量的定义:

程序中指定变量的名字和数据类型变量的定义在一个函数开头的声明部分变量定义的一般形式:类型说明符变量名1,变量名2,…

,变量名n;举例:intk,m,n;/*定义三个整型变量*/floatx,y,z;/*定义三个实型变量*/

charstr;/*定义一个字符型变量*/8第8页,课件共51页,创作于2023年2月3.变量的初始化定义变量的同时,还可以为变量指定初值,称为变量的初始化。例如程序段:floaty=0.5;charstr='a';又如:intj=0,sum=100;该定义变量方式与下面的语句等价:intj,sum;j=0;sum=100;也可以对被定义变量的一部分赋初值。inti=0,j=0,k,sum;不可以用下面的写法对几个变量同时赋同一个初值。inti=j=k=0;

9第9页,课件共51页,创作于2023年2月几点说明:

程序运行时从变量中取值,实际上是通过变量名找到相应的内存地址,从其相应的存储单元中读取数据。程序中变量值却可以动态更换。变量定义后并没有确定的值,或者说值是随机的。可以采用某些方法给变量赋值,当再次给变量赋值时,新值将替代旧值。程序中使用的变量,必须“先定义,后使用”。

58a12001a1:变量名58:变量值2001:存储单元地址Inta1=50;a1=58;a1=a1+2;200210第10页,课件共51页,创作于2023年2月关键字定义:

为了清晰的表达程序的功能,使用了一些英文单词或单词缩写,这些单词称为关键字。举例:if

、int

、while

下面几个字虽然不属于关键字,但建议读者把它们看作关键字,不要在程序中随便使用。defineundefincludeifdefifndefendif

11第11页,课件共51页,创作于2023年2月C语言的数据类型C语言中各种数据类型具有不同的存储长度、取值范围及允许的操作。C语言将能处理的数据分成两大类型,基本类型和构造类型,构造类型的数据是由若干个基本类型按一定的结构组合而成的。C语言规定:在程序中用到的数据,都必须指定其数据类型。12第12页,课件共51页,创作于2023年2月整型数据1.整型变量(1)有符号整型变量的分类有符号整型变量按数值的范围分为三种:1基本整型:以int作为类型说明符2短整型:以shortint或short作为类型说明符3长整型:以longint或long

作为类型说明符整型变量一般在内存中占的字节数与所选择的系统有关,规定long型整数不短于int型,short型整数不长于int型。13第13页,课件共51页,创作于2023年2月(2)无符号整型变量的分类定义:用来处理一些不带符号的整型变量,将存储单元中的全部二进制位都用来存放数,取消符号位,称为无符号整型。无符号整型变量按数值的取值范围不同也分为三种:1、无符号基本整型:以unsignedint作为类型说明符2、无符号短整型:以unsignedshortint或unsignedshort

作为类型说明符3、无符号长整型:以unsignedlongint或unsignedlong

作为类型说明符14第14页,课件共51页,创作于2023年2月整型数据在内存中的存储形式01111111111111111111111111111111符号位数据位=32767=65535有符号整型无符号整型15第15页,课件共51页,创作于2023年2月2.整型常量整型常量的表达形式整型常量就是整常数。有以下三种表达形式:1十进制整数例如:567、0、-89。2八进制数特征是以数字符0开头,并由数字符0~7组成的字符序列,例如0125,011;3十六进制数特征是以0x或0X开头,并由数字符0~9,和字符a~f或者字符A~F组成的数字符序列。0x2ab,0X2AB。16第16页,课件共51页,创作于2023年2月整型常量的类型整型常量的类型是由其本身隐含决定的例如:32767的类型是int,32769类型是long

一个整常量后面加一个字母L(或小写l),则明确指定该常量是longint型的,例如0L,123L,234l等。17第17页,课件共51页,创作于2023年2月实型数据1、实型变量(1)实型变量的分类实型变量按数值的范围分为三种:1单精度实型:以float作为类型说明符;2双精度实型:以double作为类型说明符;3长双精度实型:以longdouble作为类型说明符;类型说明符字节数比特数有效数字数值范围单精度实型float4326-710-38~1038双精度实型double86415~1610-308~10308长双精度实型longdouble1612818~1910-4932~10493218第18页,课件共51页,创作于2023年2月(2)实型变量的定义对每一个实型变量,都应在使用前进行定义,例如:

floatx,y;/*定义x,y为单精度实数*/doublez;/*定义z为双精度实数*/2、实型常量实型常量的表达形式十进制小数形式0.125、.125、-0.125、-125.0、1.25;指数形式一般格式是实数(整数)+e(或E)+整数例如:123.456的指数形式是1.23456e2、1.23456E2、12.3456e1、0.0123456e4、.123456e3、12345.6e-2等。而e2、1.23e3.5、e、12345E

等都是不合法形式。19第19页,课件共51页,创作于2023年2月字符型数据1、字符常量定义:字符常量是用单撇号括起来的一个字符。举例:‘

a’,‘A’,‘$’,‘5’等都是字符常量。转义字符:还有一些特殊的字符,C语言约定用“\”开头的字符序列作为标记,这类字符统称为“转义字符”。举例:转义字符‘\n’中的“n”不代表字母n,该转义字符表示在输出过程中将当前位置移到下一行的开头,简称换行;20第20页,课件共51页,创作于2023年2月2.字符变量定义:用来存放一个字符常量的变量称为字符变量。

例如程序段:

charc1,c2;/*定义变量c1,c2为字符变量*/c1='a';c2='b';/*将字符常量存放到字符变量中*/几点说明:字符常量或字符变量在内存中都只占有一个字节。字符在程序中是以ASCII码的形式表示的,在内存中是以二进制的形式存储的,它与以整数的存储形式相类似。在C程序中,字符型数可以当作整型数进行处理,并且可以和整型数混合操作和处理。21第21页,课件共51页,创作于2023年2月阅读程序。#include<stdio.h>voidmain(){charch1;intch2;ch1='A';ch2='B';printf("\n%d,%d\n",ch1,ch2);ch1=97;ch2=98;ch1=ch1+6;ch2=98+6;printf("%c,%c\n",ch1,ch2);printf("%d,%d",ch1,ch2);}运行结果:65,66g,h103,10422第22页,课件共51页,创作于2023年2月23第23页,课件共51页,创作于2023年2月字符串常量定义:字符串常量是括在一对双撇号之间的字符序列(其中也可以包括转义字符)举例:“Clanguage”,“s”,“$35.56”,“\tChins\ba\n”。字符串常量中的字符依次存储在内存中一块连续的区域内,并把空字符‘\0’(ASCII值为0)自动地附加到字符串的尾部作为字符串的结束标志。例如:字符串"HELLO"字符个数为5,所占内存空间应为6个字节。HELLO\024第24页,课件共51页,创作于2023年2月字符常量和字符串常量的区别:在程序中,用字符常量或字符串常量表示单个字符,例如‘a’,或“a”,两者的区别如下:1、字符串“a”在内存中占2个字节,而字符‘a’

在内存中占1个字节

字符串"a"字符'a'2、不能将字符串赋给一个字符变量例如程序段:charch1,ch2;

ch1='a';/*正确*/

ch2="a";/*错误*/a\0a25第25页,课件共51页,创作于2023年2月运算符和表达式运算符定义:

描述各种操作的符号称为运算符。表达式定义:

用运算符将被操作对象连接起来,符合C语言语法的式子称为表达式。表达式特点:(1)、常量和变量都是表达式(2)、运算符的类型对应表达式的类型,例如:算术运算符对应算术表达式。(3)、每一个表达式都有自己的值。26第26页,课件共51页,创作于2023年2月运算符属性:(1)优先级当若干个运算符同时出现在表达式中时,优先级规定了运算的先后次序。由于C语言运算符种类很多,所以优先级有15级之多。

C语言把圆括号作为运算符,规定它的优先级最高,规定为15级,从而保证优先运算圆括号内的式子,逗号运算符的级别最低,规定为1级。27第27页,课件共51页,创作于2023年2月(2)结合性

当若干个具有相同优先级的运算符相邻出现在表达式中时,结合方向规定了运算的先后次序。分为“从左到右”和“从右到左”两个结合方向。一般来说,大多数运算符的结合方向”从左到右”,只有单目运算符、赋值运算符和条件运算符的结合方向”从右到左”,这里单目运算符是指作用于一个操作对象的运算符。28第28页,课件共51页,创作于2023年2月算术运算符和算术表达式算术运算符:+,-,*,/,%几点说明:1、+、-、*与数学中的意义相同2、在除法运算中,两个整数相除的结果为整数,一般采用”向零取整”的规则,取整时向零靠拢。例如9/2运算结果为4;-9/2运算结果为-4。29第29页,课件共51页,创作于2023年2月

3、%是取余运算符或称模运算符,运算结果是两个整数相除后的余数(整数)。并且规定运算结果的正负符号与被除数的符号一致,如果被除数小于除数,运算结果等于被除数。

9%2运算结果为12%9的运算结果为2-9%2的运算结果为-19%-2的运算结果为130第30页,课件共51页,创作于2023年2月赋值运算符和赋值表达式赋值运算符是符号=作用:将一个数据赋给一个变量。由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。一般形式:变量=表达式作用:把赋值运算符右边表达式的值赋给赋值运算符左边的变量

31第31页,课件共51页,创作于2023年2月几点说明:1、赋值运算后,变量原来的值被表达式的值替换2、赋值表达式的值也就是赋值运算符左边变量得到的值,如果右边表达式的值的类型与左边变量的类型不一致,以左边变量的类型为基准。3、赋值运算符的优先级很低,仅高于逗号运算符。结合方向为“从右向左”。例:inta=2,b=5

计算表达式x=y=a+b的值32第32页,课件共51页,创作于2023年2月复合赋值运算符复合赋值运算符:+=-=*=/=%=(与算术运算有关)已知:inta,b=5,c=4

计算表达式a+=a-=a=b+c的值。1.a+=(a-=(a=(b+c)))2.a=a+(a=a-(a=(b+c)))3.a=a+(a=a-(a=9));4.a=a+(a=a-9);5.a=a+0;a=0+0;a=0;最后表达式的值为0,变量a的值也为0。33第33页,课件共51页,创作于2023年2月数据类型转换

整型、实型和字符型数据可以进行混合运算,在进行运算时,一般类型的数据先转换成标准类型的数据,不同类型的数据要先转换成相同类型的数据。转换规则如下:

不同数据类型的数据间的混合运算34第34页,课件共51页,创作于2023年2月1、在运算过程中,每个数据要转换为标准类型,以提高运算精度,例如:如果一个数据是float型,首先应转换double型;如果一个数据是short型或char型,首先应转换为int型。2、通过第一步转换后,如果参与运算的数据类型仍不相同,不同类型的数据要先转换成同一类型的数据,然后进行运算。转换的规则是,“由低向高”,也就是说一个表达式的值的类型是其中各个参与运算的数据中级别最高的类型。35第35页,课件共51页,创作于2023年2月自动转换

所谓“自动转换”就是系统根据规则自动将两个不同数据类型的运算对象转换成同一种数据类型的过程。36第36页,课件共51页,创作于2023年2月强制转换

在C语言中,允许程序员根据自己的意愿将一种数据类型强制转换成另一种数据类型。强制转换的格式为:

(数据类型名)操作对象注意,强制转换并不改变操作对象的数据类型和数值。例如,(int)f的确切含义是将f转换成为整型值参与运算,而f本身的数据类型和数值都没有任何改变。37第37页,课件共51页,创作于2023年2月赋值表达式的类型转换当赋值运算符左边的变量与赋值运算符右边的表达式的数据类型不相同时,系统负责将右边的数据类型转换成左边的数据类型。会有两种情况产生,一种是转换以后会丢失数据,另一种是转换以后不会丢失数据。这与赋值号两边的表达式的数据类型所占的字节数及存储表示方式有关。38第38页,课件共51页,创作于2023年2月intunsignedintlongintdoublefloatchar,short转换规则存储长度较短存储长度较长总趋势:算术表达式中的运算转换小结39第39页,课件共51页,创作于2023年2月例:intx=2;floaty=1.6;charc='A';c+x*y=?65(int)2(int)1.6(double)3.2(double)68.2(double)40第40页,课件共51页,创作于2023年2月例:#include"stdio.h"voidmain(){intc;/*charc;*/c='B';printf("c=%c",c+'a'-'A');}

运行结果:c=b41第41页,课件共51页,创作于2023年2月例:#include"stdio.h"voidmain(){charc;inti=0x3241;printf("i=%c\n",i);c=i;printf("c=%d\n",c);printf("i=%d\n",i);}运行结果i=Ac=65i=1286542第42页,课件共51页,创作于2023年2月自增,自减运算一般形式:

++变量或变量++

――变量或变量――作用:使变量的值增1或减1,其中变量是指算术类型的变量。43第43页,课件共51页,创作于2023年2月设x为算术类型的变量:x++和++x的相同之处单独作为一个表达式语句被使用时无论执行了哪一种表达式,执行结束后x的值都增加1;当x++和++x出现在其他表达式中时,也就是说作为其他表达式的一部分时,表达式的结果是不同的。44第44页,课件共51页,创作于2023年2月前缀表示法是先将i值增/减1,再在表达式中使用;而后缀表示法是先在表达式中使用i的值,再将i值增/减1。例如:

i=3;i=3;j=i++;j=++i;

结果:j的内容为3j的内容为4i的内容为4i的内容为4

45第45页,课件共51页,创作于2023年2月阅读程序main(){ inti=1,j=1,m; m=i++;/*等价于:m=i;

温馨提示

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

最新文档

评论

0/150

提交评论