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

下载本文档

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

文档简介

第2讲

数据类型、运算符和表达式1计算机中的信息计算机中的信息虽然种类繁多,形式多样。但是在处理时都可以表达为数据的形式。这里的数据不仅包括我们熟知的数学运算中的数据,还包括声音、图像等复杂信息。数据在计算机中进行处理时,首先必须解决的问题是数据在存储器里的存储问题:由于计算机的内存大小有限,怎样存储更加节约存储空间?怎样存储便于数据的管理,例如查找、排序、统计等。结论:计算机中的数据按照类型进行存储引出“数据类型”的概念2引例假设要记录一个人的详细资料。具体内容如下:姓名:michal性别:男年龄:30工资:2004.86工作单位:人民邮电出版社发行部3假如现在分别用不同的数据来表示上述个人资料中的基本信息。姓名:字符类型数据性别:只有“男”和“女”两种选择年龄:都为整数,而且一般不会超过100工资:实数工作单位:内容丰富结论:不同的数据信息在表达时具有不同的特点4划分数据类型的必要性划分数据类型的意义:划分数据类型有利于数据的管理划分数据类型有利于有效利用计算机有限的内存空间在C程序中:每一个数据都被赋予一个确定的数据类型。不同的数据类型的数据在存储时占有不同长度的内存空间。注意:C程序中的每一个数据都必须有一个确定的数据类型。5基本数据类型数据类型的分类基本数据类型复杂数据类型几种常用的基本数据类型:char,字符型:占有一个字节的长度,主要用来描述符号类型的数据。int,整型数:占有4个字节的长度,一般用来描述整数类型的数据float,单精度浮点型实数:占有4个字节的长度,一般用来表示带有小数的实数。double,双精度浮点型实数:占有8个字节的长度,一般用来表示精度较高的实数6总结回到前例,下面分析几种数据在表达上的特点:姓名:工作单位:可以使用字符型数据char来表示年龄:可以使用整型数据int来表示工资:可以使用单精度实数float来表示。在C语言程序中,每一个数据都应该具有特定的类型。7常量常量的概念常量就是在程序运行过程中其数值不会发生改变的量。符号常量的使用定义:#define常量名称常量值例如:#definePI3.14159用途:便于程序的调试#defineA5…………..A………..A………………….A…….……………..A….A………..8提示:一般来说,在C程序中符号常量通常使用大写字母表示,以便区别于变量。特殊的字符常量:转义字符\n:回车换行\a:警铃声\t:水平制表

\V:竖直制表\\:反斜杠“\”\‘:单引号“’”9变量变量的概念在程序中其值可以发生改变的量。注意:一个变量在某一时刻只有一个确定的数值,一个变量在获得新值时原值将不复存在。变量的定义格式:数据类型变量名(=初始值)例如:inti=5对变量名的要求变量名主要由英文字母和数字构成。C程序中的变量名区分大小写变量名中不允许包含“;”、“。”、“+”、“-”以及“:”等符号。但可以使用下划线“_”。实际应用中,建议尽量使用具有实际意义的英文单词作为变量名,尽量做到“见名知义”不要使用系统关键字作为变量名10定义变量的实质变量的操作读(取)写(存)定义一种数据类型的变量的实质,就是在内存中为该变量分配一定大小的存储空间。此时变量名作为该存储空间的标识。当程序对该变量进行运算时,都要访问该变量对应的存储空间以进行数据读写任何变量在使用前必须定义。在程序中使用未经定义的变量是不合法的11变量的值任何变量必须具有确定的数值才能参加运算和操作。否则将会引发潜在的错误。可以在变量定义的同时为其赋初值:

intage=10;也可以在定义变量后再为其赋初值

intage;

age=10;/*此处的“=”为赋值运算符还可以同时定义多个变量并为其赋初值:

Inta=6,b=3,c=7;12整型变量数据在内存中的存放形式二进制补码整型变量分类基本整型int4字节短整型shortint2字节长整型longint4字节有符号[signed]int

无符号unsignedint3.整型变量的定义13实型变量实型变量的存放形式实型变量的分类

floatdoublelongdouble实型变量的定义14字符型变量字符变量用来存放字符型数据。但是在一个字符变量中只能存放一个字符。字符变量的赋值

charletter=‘a’/*注意加单引号*/字符变量的存储字符变量在存储时,在其相对应的存储单元中并非存储字符本身,而是将其对应的ASCII代码(一个整数值)保存在内存空间中。字符串使用双引号包括起来的字符序列:“CProgram”15数据的表示Bit(位):一个bit存储一个二进制位(0或1)字节:8个bit作为一个字节,是计算机中为数据分配内存空间的单位。例如:char数据类型数据:1字节;int类型数据:4字节一个数据被分配的存储空间越大,能容纳的信息量越大,越容易表达更加复杂的信息。数据在内存中都以二进制的形式表示10011011高位低位16运算符和表达式运算:对数据进行加工处理的过程。运算量:参与运算的数据。运算符:记录不同种类运算的符号。表达式:用运算符把运算量连接起来的式子。运算的类型单目运算:单个运算量参与的运算。双目运算:两个运算量参与的运算。三目运算:三个运算量参与的运算。在C语言中只有一个三目运算。17C语言中的运算符C语言具有丰富的运算符C语言中的运算符被分为不同的类型任何表达式都有一个确定的值算术运算符:用于实现简单的数学运算,一般为双目运算:+(加)、—(减)、*(乘)/:除法(整除)2/4=0;7/3=2;7/3.0=2.3%:取余运算:2%4=2;7%3=1算术表达式:(a+8*6.5/6)%b18关系运算符关系运算符用来比较两个数据的大小,为双目运算。关系运算可以归纳为“大于(或等于)”、“小于(或等于)”关系运算的结果是关系成立(结果为真)或不成立(结果为假)关系运算符:<,>,>=,<=,特别注意:==:判断相等!=:判断不等=:赋值运算符19关系表达式已知:inta=2;doublef=3.0;charc=‘a’(f/3)>(a-c)1.0-95成立,结果为1(a+2)!=(c-93)44不成立,结果为0(c%a)>(a/2)11不成立,结果为0关系表达式的结果不是1(真)就是0(假):当关系表达式所表示的关系成立时,其结果为1;当关系表达式所表示的关系不成立时,其结果为020逻辑运算符逻辑运算符用来对关系式或逻辑量进行逻辑运算。逻辑运算的结果也仅有两种:真(1)和假(0)在C语言中使用整数0来表示逻辑假,同时,使用非零值(只要不是0的正数和负数)来代表逻辑真21“与”逻辑运算符&&是一种双目运算将“与”逻辑运算符&&插入两个运算量之间组成逻辑表达式。组成表达式的运算量可以是算术表达式、关系表达式以及逻辑表达式对一个与逻辑表达式(&&)求值时,只有组成表达式的所有运算量的值为真(1),其结果才为真,只要这些运算量中有一个的值为假,其值即为假(0)22已知inta=2;doublef=3.0;charc=‘a’(c>a)&&(f>4)(1,0,其值为假)(c>a)&&(f<4)(1,1,其值为真)在逻辑表达式中,若连续出现多个“与”运算,则从左至右依次计算每个表达式的值。只要计算出某一个表达式的值为假,则全式的结果为假,就不再对后面的表达式进行计算-----短路运算符例:intn=1,d=0;d!=0&&n*d<0(不必计算n*d<0)23或逻辑运算符(||)对一个或逻辑表达式(||)求值时,只要组成表达式的运算量中有一个的值为真(1),其结果即为真,只有这些运算量中所有值为假时,其值即为假(0)。已知inta=2;doublef=3.0;charc=‘a’(c>a)||(f>4)(1,0,其值为真)(c<a)||(f>4)(0,0,其值为假)24逻辑非运算(!)单目运算表示对一个表达式的值取反的运算。如果一个表达式的值为真,对其进行逻辑非运算后,其值为假;如果一个表达式的值为假,对其进行逻辑非运算后,其值为真。可以对任意数据类型的表达式进行逻辑非运算。已知inta=2;doublef=3.0;charc=‘a’(c>a)其值为真!(c>a)其值为假25赋值运算将一个数值或一个表达式的值送给一个变量的操作称为赋值例如:(inta;)a=6;a=a+6;a=a+(b*2+1)注意:表达式中的“=”不在是数学上的等号。这里体现了一种“迭代”的运算。26C语言中的赋值运算由于赋值表达式与传统的数学等式相悖,容易造成误解赋值号左端的变量还要在右端重写一次,显得过于繁琐x=x+6x+=6x=x*6x*=6x=x-6x-=6x=x/6x/=6x=x%6x%=627特别地:

x=x+1x++赋值运算是双目运算,其左值必须是单个变量(有确定的内存空间);其右值可以是表达式、常量以及已经赋值的变量。一个变量在进行赋值运算后,获得新的数值的同时,原来的值将不复存在。28多重赋值语句由多个赋值运算符组成的语句例:Intx=2,y,z;x+=y=z=6按照“从右至左”的结合顺序进行计算,依次完成赋值操作z=6赋值后z变量的值为6y=z将变量z的值赋给变量y,y的值也为6x+=yx=x+yx最终值为829自增自减运算自增运算++:a++:a=a+1自减运算--:a--:a=a-1自增运算包括前置运算和后置运算,二者在参与运算时具有较大区别运算符放在变量的前面:++a;--a变量先自增或自减,然后使用变量自增或自减后的值参加其他运算前置运算30后置运算运算符放在变量的前面:a++;a--变量先以原来的值参与其他运算,然后再自增或自减。例:intm=12,n=5,k=16,x;x=n++;(n的原值5送给x,然后自增为6x=++n;(n自增为7,然后将其值赋给xx=(++k)-(--m)(k先自增为17,m自减为

11,然后将运算结果6赋给xx=k++-m--(k和m以原值进行减法运算,将结果6赋给X,然后k自增,m自减31三目运算格式:包含3个运算量表达式1?表达式2:表达式3;算法:首先计算表达式1的值,若其值为真(非零值),则计算表达式2的值作为整个表达式的值;若其值为假(0),则计算表达式3的值作为整个表达式的值;例:intx=4,y=6,z;

z=x>y?x:y

因为x(4)<y(6),因此将y的值赋给z(6)32运算符的优先级在计算含有多个不同运算符的表达式时,必须考虑哪个运算符优先计算的问题。这是通过为不同类型的运算符设置不同的优先级来实现的。不同优先级的运算符具有不同的运算顺序,类似于我们熟知的“先乘除、后加减”33常用运算符的优先级一般来说,单目运算的优先级最高:++、--、!、+(取正数)、-(取负数)*,/,%+,-<,<=,>,>===,!=&&||三目运算:?:赋值运算:=,+=等等最低34优先级总结:单目高于双目,双目高于三目,三目高于赋值在双目中:算术运算高于关系运算,关系运算高于逻辑运算在以后的学习过程中,我们还会不断学习到更多新的运算符,仍然可以根据上述方法来确定优先级。Intx=4,y=25,z=2;z=(--y/++x)*z--结果:735运算符的结合规则在一个1表达式中,如果同一级别的运算符出现在一个表达式的相邻位置,这时必须考虑结合规则。例如a+b-c,到底是(a+b)-c还是a+(b-c)大多数运算符的结合规则都是从左到右,只有两类运算符是从右到左:单目运算:!

温馨提示

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

评论

0/150

提交评论