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

下载本文档

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

文档简介

C语言程序设计第二章数据类型、运算符与表达式C语言程序设计本章重点内容一、C语言数据类型

二、标识符、常量和变量三、C运算符和表达式四、不同类型数据的转换C语言程序设计基本类型构造类型指针类型空类型整型实型(浮点型)数据类型字符型char枚举类型单精度实型数据类型

float双精度实型double整型

int长整型long

短整型无符号整型数组类型结构体类型共用体类型一、数据类型C语言程序设计类型名类型符占用字节有符号短整型[signed]short[int]2无符号短整型unsignedshort[int]2有符号基本整型[signed]int4无符号基本整型unsigned[int]4有符号长整型[signed]long[int]4无符号长整型unsignedlong[int]41整型数据1)整型数据的类型C语言程序设计2)整型数据在内存中的存放形式整型数据在内存中是以二进制形式存放的。机器内部,整型数据是以补码表示的。正数:其补码和原码相同。负数:其补码为:该数的绝对值的二进制数按位取反加1。100011000000000001110011111111110111101111111111-35取反加1最高位最高位是符号位,其为0时是正数,为1时是负数。C语言程序设计2实型数据1)实型数据的类型类型符占用字节有效数字float46~7double815~16longdouble1218~19C语言程序设计2)实型数据在内存中的存储格式C语言程序设计3字符型数据1)字符型数据表示一个ASCII字符。类型符:char,占用一个字节。C语言程序设计

在内存中,字符数据并不是把字符本身放到内存单元中,而是将该字符的相应ASCII码(二进制的形式)放到存储单元中。

A6501000001a9701100001ASCII二进制如:有两个字符型数据‘A’和‘a’2)字符型数据在内存中的存储格式C语言程序设计

提示:因为在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似,因此字符型数据和整数数据可以通用。可以互相赋值,也可参与任何整数运算。C语言程序设计(一)标识符

标识符用来标识变量名、符号常量名、函数名、

类型名和文件名。

C语言规定标识符只能由字母(A~Z,a~z)、

数字(0~9)、下划线(_)组成,并且其第一个字符

必须是字母或下划线。注意:(1)C语言中,标识符区分大小写。(2)命名应尽量有相应的意义,以便于阅读理解。

(3)关键字不能用作用户自定义的标识符。

二、标识符、常量与变量C语言程序设计常量是在程序运行过程中,其值不发生改变的量。1.直接常量如:12,65.2,‘B’,“Study”等。2.符号常量(宏常量)用标识符表示的常量称为符号常量。宏常量是有宏定义编译处理命令定义的,宏定义的一般形式为:

#define标识符字符串 #definePI3.1415926(二)常量C语言程序设计1)整型常量的表示

十进制数1856-8

八进制数以0开头。如0126。十六进制数以0x开头。如0x1237。1.整型常量C语言程序设计2)整型常量的类型确定一个整数,如果其值在–32768~32767

,C认为是shortint型。一个整数,如果其值超过了–32768~32767

,而在-2147483648~+2147483647之间,C认为是int型。一个整常数其后面加一个u或U,C认为是unsignedint型。一个整常数其后面加一个l或L,C认为是longint型。C语言程序设计1)

实型常量的表示(1)十进制小数形式。由数字和小数点组成(必须有小数点)如0.123.12323.0.0等。注意:5是整型常量;5.0是实型常量。(2)指数形式。123*103

可以写成123e3或123E3。注意E前面必须有数字,E后面必须是整数。一般写成规范格式1.23E+05

2.实型常量C语言程序设计实型常量隐含按双精度型处理。单精度型常量由常量值后跟F或f表示。长双精度型常量由常量值后跟L或l表示。2)整型常量的类型确定C语言程序设计字符含义字符含义‘\n’‘\r’‘\0’‘\t’‘\v’‘\b’‘\f’换行回车但不换行空字符水平制表垂直制表退格走纸换页‘\a’‘\”’‘\’’‘\\’‘\?’‘\ddd’‘\xhh’响铃报警双引号单引号反斜杠问号1~3位八进制ASCII码值代表的字符1~2位十六进制ASCII码值代表的字符1.字符常量:用单引号括起来的一个字符。如:‘A’

‘8’2.转义字符常量:以“\”开头的字符序列。3.字符型常量C语言程序设计4.字符串常量

由一对双引号括起的字符序列称为字符串常量,例如:

“Howdoyoudo?”

“china”

“8”C规定以字符‘\0’作为字符串结束的标志,因此,在内存中字符串常量所占字节数为实际字符个数+1

注意:不要把字符常量和字符串常量混淆。”a”是字符串常量,‘a’是字符常量,C语言程序设计

1.什么是变量变量:在程序运行过程中,其值可以被改变的量称为变量。变量的实质是一个存储数据的内存单元。变量具有三个要素:变量名、数据类型和变量的值。变量名是变量的名字,用标识符来标识,变量存储的数据就是变量的值,数据类型决定了变量所占字节的多少。(三)

变量C语言程序设计2.变量的定义变量定义的基本语法格式为:

变量类型名

变量名列表;如:

inti,j,k;/*定义i,j,k为整型变量*/

doublex1,x2;/*定义x1,x2为双精度实型变量*/

floatf1,f2;/*定义f1,f2为单精度实型变量*/charc1,c2;/*定义c1,c2为字符型变量*/注意:c语言规定:变量必须先定义后使用。C语言程序设计

定义变量时应注意:(1)变量名的命名,要遵循C语言中关于标识符的规定。(2)在同一个函数体内,不能定义同名的两个变量。(3)在C语言中,所有变量的定义语句必须放在函数体的最开始处。(4)可以在一个类型说明符后,定义多个相同类型的变量。各变量名之间用逗号间隔。(5)变量类型名与变量名之间至少用一个空格间隔。C语言程序设计(6)C语言中,允许在对变量定义时给其赋初值(初始化)。例如:inta=2;/*定义a为整型变量,初值为2*/

charc=’x’;/*定义c为字符型变量,初值为’x’*/inta,b=2;

/*定义a,b为整型变量,只对b赋出值为2*/注意:不能以下格式对a,b变量赋初值,

inta=b=2;

应该分别赋初值:inta=2,b=2;C语言程序设计(7)可使用const类型修饰符用const修饰的标识符为常量。const类型修饰符必须放在它所修饰的类型名之前。

例如:

#include<stdio.h>voidmain()

{inta=3,x,y;intconstb=586542135;a=6;x=a+b;y=b-a;printf(“X=%dY=%d\n”,x,y);}

C语言程序设计(一)

运算符1)运算符:能够完成某种操作(运算)的符号。

2)根据运算符的运算对象(操作数)的多少,运算符可分为:①单目(一元)运算符i++

--i-n②双目(二元)运算符a+bd/e③三目(三元)运算符

x>y?x+3:y*9(条件运算符)三、C语言运算符和表达式C语言程序设计优先级运算符操作数结合性1

()[]->.左右2!~-++--&*sizeof1右左3*/%2左右4

+-2左右5

<<>>2左右6

<<=>=>2左右7

==!=2左右8

&2左右9

^2左右10

|2左右11

&&2左右12

||2左右13

?:3右左14=*=/=%=+=-=

&=|=^=<<=>>=2右左15,2左右C语言程序设计(二)

表达式1、C表达式:由C运算符和运算对象构成的式子。运算对象可以是常量、变量、函数或表达式。

2、表达式的书写原则(1)C语言的表达式只能采用线性的形式书写。例如:①应写成1/3.0+i+j*j*j。

②应写成(a+b)/(c+d)*e+f。

C语言程序设计(2)C语言的表达式只能使用C语言中合法的运算符,而且运算符不能省略。例如:①πr2应写成3.14159*r*r。(3)对有些操作须调用库函数完成,①应写成0.5*a*b*sin(alph)。②|x-y|应写成fabs(x-y)。③y+2X

应写成y+pow(2,x)。C语言程序设计3、表达式在求值时,遵循以下规则(1)优先级:不同优先级的运算符出现在同一表达式时,按运算符的优先级的高低次序执行。

例如:

d=a+b*c;/*先乘后加*/(2)结合性:是指表达式中出现同优先级的操作符时,该先做哪个操作符的规定。结合方向:“自左向右”、“自右向左”例如:

a+b-c从左至右d=a=b=3从右至左C语言程序设计4、表达式的分类

C语言表达式种类很多,有多种分类方法。我们一般依据运算的特征将表达式分为:①算术表达式,如a+b*2.0-3.0/5.0②关系表达式,如x>=y,cj>=60③逻辑表达式,如(x>=2)&&(x<=8)④赋值表达式,如a=b=c=1x=0.0⑤条件表达式,如(a>b)?a:b⑥逗号表达式,如a=2,b=a*a,c=sqrt(b)C语言程序设计5、表达式值的数据类型(1)每个表达式都有一个确定的值,因而有确定的数据类型。(2)表达式的数据类型取决与最后执行的运算符,如:34.5+(1>6)为算术表达式,类型是double型,值34.5

34.5+1>6为关系表达式,类型是int型,值1C语言程序设计(三)算术运算符和算术表达式

1、算术运算符分类单目运算符

-负号运算、++自增、--自减双目运算符

+加、-减、*乘、/除、%求余

C语言程序设计解释:

“/”为除法运算符。C规定如果是两个整型数相除,其意义就是整数除,结果为int型。如至少有一个操作数为实数时,其意义是实数除,结果为double型。如:5/2=25.0/2=2.5

“%”为取余运算符。如:5%3=2注意:

1.只能对整数取余数,不能对浮点数取余数。如表达式10.4%5是错误的。

2.运算结果的符号与左操作数相同。

-35%8=-335%-8=3C语言程序设计2、自增操作符和自减操作符

自增运算符“++”,功能是将变量的值加1;自减运算符“--”,功能是将变量的值减1。

“++”、“--”是对一个变量进行简单的加1算术运算,运算的结果仍赋给该变量。所以,实际上自增、自减运算是算术运算和赋值运算的结合。运算符“++”或“--”既可以作为一个变量的前缀,也可以作为一个变量的后缀。例如:++x--xx++x--前缀和后缀的区别:对一个变量,施加前缀或后缀运算其结果是相同的,都是该变量的值加1或减1。但是,当施加前缀或后缀运算的变量作为表达式中其它运算符的一个操作对象时,则参与运算的值是不同的。前缀运算是先将该变量的值增1(或减1),然后再用该变量的值参与表达式中的其它运算;而后缀运算是先用该变量的值参与表达式中的其它运算,然后将该变量的值增1(或减1)。C语言程序设计例如:

intx,a=5;x=3+(++a);表达式x=++a的运算等价于a=a+1、x=3+a,即先把变量a的值加1,然后再把加1后的a值赋给x。执行结果为:a的值为6,x的值也为9。

而对于intx,a=5;x=3+a++;表达式x=a++的运算等价于x=3+a、a=a+1即先把变量a的值赋给x,然后a的值加1。执行结果为:a的值为6,而x的值为8。

注意:

自加或自减运算只能用于变量,不能用于常量或表达式;错误:25++(i+j)++C语言程序设计3、算术表达式

表达式中含有算术运算符的表达式

例如:a+b*2.0-3.0/5.0 x/2+y*3-6.8 x%2 x+12 a*a+b*c-6C语言程序设计(四)赋值运算符和赋值表达式1、赋值运算符:=赋值表达式:变量=表达式赋值运算时先计算右边表达式的值,然后将右边表达式的值赋给左边变量,并以此值作为整个赋值表达式的值。注意:赋值运算符具有“自右向左”的结合性,赋值运算符右边的表达式也可以是赋值表达式:

例如:a=b=5;

等同于a=(b=5);C语言程序设计2、复合赋值运算算术复合赋值运算符:+=、-=、*=、/=、%=位复合赋值运算符:&=、|=、^=、>>=、<<=

一般形式:

变量☆=表达式符。

等价于:

变量=变量☆表达式

☆代表任一双目算术运算符或位运算

C语言程序设计例如:inta=3;a+=2;等价于a=a+2floatx=1.2,y=2.1;y*=x+3.4;等价于y=y*(x+3.4)(4)inta=1,b=2;b/=a+=1;等价于b=b/(a=a+1)C语言程序设计(五)关系运算符和关系表达式一、关系运算符:<、>、<=、>=、==、!=<、<=、>、>=的优先级相同,==、!=的优先级相同,前者的优先级高于后者。二、关系表达式关系表达式的运算结果是一个逻辑量,即“真”或“假”,关系表达式所表达的关系如果成立,其值为“真”;若不成立,其值为“假”。如:X>=60在C语言中没有逻辑类型,而是用1代表“真”,用0代表“假”。所以关系表达式的值,不是0,就是1,其类型是int型。

C语言程序设计(六)逻辑运算符与逻辑表达式1、逻辑运算符!逻辑非&&逻辑与

||逻辑或2、逻辑表达式及其意义

&&:两操作数同为真时结果为真

!:取反

||:两操作数只要有一个为真时结果就为真

C语言程序设计3、优先级:!>&&>||&&和||运算符的优先级低于算术运算符和关系运算符,而高于赋值运算符。4、操作数是逻辑量C语言在进行逻辑运算时,把所有的运算对象都看做是逻辑量,如果其值为0,则为假,非0则为真。逻辑表达式的运算结果仍然是逻辑量(0或1)如:(6+5)&&-8结果为1

!5结果为0

6||0结果为1C语言程序设计

(七)条件运算符和条件表达式1、语法形式:

<表达式1>?<表达式2>:<表达式3>意义:如果表达式1的值为真,条件表达式的结果为表达式2的值;如果表达式1的值为假,条件表达式的结果为表达式3的值;C语言程序设计#include<stdio.h>Voidmain(){intx;scanf(″%d″,&x);

x>0?printf(″%s″,″正数″):printf(″%s″,″负数″);}例:判断整数的正负。C语言程序设计注意:结合方向“自右向左”

a>b?a:c>d?c:d相当于a>b?a:(c>d?c:d)C语言程序设计(八)逗号运算符和逗号表达式1、逗号运算是双目运算,一般形式如下:表达式1,表达式2逗号表达式的的求解过程是:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。逗号表达式的的求解过程是:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。如:q=(a=2,a*6)先计算a=2,再计算a*6,并以此作为整个表达式的值,表达式的值为12。C语言程序设计#include<stdio.h>voidmain(){inti,j,k;i=1;j=2;k=3;printf(“%d%d%d\n”,i,j,k);}#include<stdio.h>voidmain(){inti,j,k;i=1,j=2,k=3;printf(“%d%d%d\n”,i,j,k);}三个赋值语句一个逗号表达式语

温馨提示

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

评论

0/150

提交评论