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

下载本文档

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

文档简介

1C语言发展C程序形式和程序执行过程C程序的结构

回顾上节课内容2什么是C语言:人和计算机交换信息所用的语言,称为计算机语言。用计算机语言编写的代码称为程序;用高级语言编写的程序称为源程序;且源程序必须通过编译和连接后,才能被计算机执行。

机器语言;0,1代码编程汇编语言;助记符编程高级语言;自然语言编程,如C语言等3C程序的编辑、编译、连接和运行过程:编辑

编译

连接

运行注:C程序源文件的扩展名是.cabc.objabc.cabc.exe输出结果4程序的结构C程序由函数构成。一个函数由两个部分组成:函数首部(说明部分)函数名、类型、参数及类型说明

函数体

{……}变量的定义及执行部分书写格式自由:一般用小写字母,语句以分号结束,分号是语句的必要组成部分,一行上可以写几条语句,一条语句也可以写在几行上。5程序的结构(续)C程序总是从main函数开始执行,并且一定有且仅有一个主函数,主函数名必须是main。

C语言本身不带输入输出语句,必须通过调用库函数来实现输入输出。以/*……*/之间的内容是注释,不影响程序的执行,可增加程序的可读性。6

本讲内容1.各种数据类型的常量与变量2.运算符和表达式7C语言里常用的数据类型有整型、实型、字符型、数组、结构体类型、指针类型等。数据类型丰富是C语言的特点之一。如:3.1数据类型int整型 char字符型float浮点型

8例1:编程:输出5和6的和与平均值(保留两位小数)。

#include<stdio.h>main(){inta,b,sum;/*定义变量a,b,sum为整形*/floatav;/*定义变量av为实型*/a=5;b=6;sum=a+b;/*计算a+b的值,并赋值给sum*/av=sum/2;/*计算平均值*/printf(“sum=%d,av=%.2f\n”,sum,av);/*输出*/}结果:sum=11,av=5.00注意:在处理数据和输出数据时,一定要选用合适的数据类型和正确的输出格式说明。93.1.1

常量与变量例2:编写输出1000和100的和与差的程序。

#include<stdio.h>#defineABC1000/*定义符号常量*/main(){ints;/*定义变量s为整形*/s=ABC+100;/*相当于s=1000+100*/printf(“sum=%d”,s);/*输出和*/

s=ABC-100;printf(“差=%d\n”,s);/*输出差*/}10常量与变量概念常量:在程序运行过程中其值不能变的量。包括直接常量和符号常量。

符号常量的定义:

#define标识符常量变量:程序运行过程中其值可以改变的量,系统为程序中的每一个变量开辟一个存储单元,如:例2中的s

11变量名字母开头,后跟字母、数字和下划线组成。C语言中的关键字不能作为变量名。说明变量必须先定义后使用;变量中存放的只能是数据,而且只能是一个数据,往变量中存放数据的操作称为赋值;12变量的“名”和变量的“值”不同,变量的“名”是该变量所代表的存储单元的标志,而变量的“值”是指存储单元中的内容。如:inta;执行a=5;执行a=10;

定义a第一次赋值第二次赋值a的值不定

5

1013整型常量

基本型–32768---32767

有符号型短整型-32768----32676整型常量长整型-231-----231-1

无符号基本型0--65535

无符号型无符号短整型0—65535

无符号长整型0---232-114三种形式表示:十进制:如123600八进制:以0开始,如0123十六进制:以0x开始,如0x123整型常量15定义格式:int变量名1[=常量1],变量名2[=常量2],…;long变量名1[=常量1],变量名2[=常量2],…;如:inta,b=9;longs=1;整型变量16实型常量表示形式:小数形式

1.01.+12.0-12.00.0指数形式

1e31.8e-3-123E-6-.1E-3指数只能是整数,而尾数则可以是整数也可以是小数,无论指数或尾数均不能省略例如:1e、E.5、E-3

非法实型常量的类型:默认为double型,后面加F(或f),则强调表示该数是float类型例如:3.5f、1e2F

实型数据类型17实型变量1)实型数据在内存中的存放形式:一个实型数据一般在内存中占4个字节(32位)。

2)实型变量的分类实型变量分为:单精度(float)、双精度(double)。18实型变量定义:

类型说明符变量名标识符,变量名标识符,...例如:floatx,y;(x,y为单精度实型量)

doublea,b,c;(a,b,c为双精度实型量)

说明

(1).实型常数不分单、双精度,都按双精度double型处理。

(2).实型常量可以赋值给一个float、double、longdouble型变量。根据变量的类型截取实型常量中相应的有效数字。

决定分配字节数和数的表示范围合法标识符19字符型数据类型

字符常量单引号括起来的单个可视字符例如:'a'、'A'、'+'、'3'、''等转义字符常量单引号括起来的\与可视字符组合,例如:20字符常量还有另外一种形式

——转义字符形式。

转义字符功能ASCII记号转义字符

能ASCII记号

\a 响铃

BEL\\反斜杠字?\ \b 退格

BS\‘

单引号字符

'\f走纸换页

FF\“

双引号字符

"\n 换行

NL\? 问号

? \r 回车

CR\ooo 1~3位8进制数

ooo\t横向跳格

HT\xhh 1~2位16进制数

hh\v纵向跳格

VT21双引号括起来的字符序列。如"Howareyou","0"等字符串在存储时末尾被自动加上字符‘\0’字符常量与只包含一个字符的字符串常量的区别字符串常量

22字符串的存储C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个‘\0’作为字符串的结束标志。注意:在源程序中书写字符串常量时,不必加结束字符‘\0’,否则画蛇添足。

如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示:最后一个字符'\0'是系统自动加上的,它占用6字节而非5字节内存空间。CHINA\023综上所述,字符常量'A'与字符串常量"A"是两回事:(1)定界符不同:字符常量使用单引号,而字符串常量使用双引号;

(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字符数加1。增加的一个字节存放字符‘\0’(ASCII值为0),这是字符串的结束标志。24字符型变量中存放ASCII字符集中的任何一个字符,字符变量在内存中占一个字节。定义格式:

char变量名1,变量名2,…;

如:

chara,b;a=97-32;b=a+2;

字符型变量

252)特性字符数据在内存中存储的是字符的ASCII码──一个无符号整数,其形式与整数的存储形式一样,所以C语言允许字符型数据与整型数据之间通用。(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。

/*程序功能:用字符形式和整数形式输出字符变量*/

main()

{charch1,ch2;

ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

printf(“ch1=%d,ch2=%d\n”,ch1,ch2);

}

程序运行结果:

ch1=a,ch2=b

ch1=97,ch2=9826基本数据类型(TurboC编译系统)类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-21亿~21亿16unsigned

int0~65535320~42亿unsigned

longunsigned

short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBMPC机为例:27变量的初始化:

允许在说明变量的时候对变量赋初值。例如:inta=5,b=10+2;doublex=23.568,y;charch1='a',ch2=66,ch3='\142';表示定义变量并对变量存储单元赋值。错误的初始化:

inta=3+b,b=5;

floatm=n=23.16;28

图中横向向左的箭头表示必定的转换(不必考虑其它运算对象)。如字符数据参与运算必定转化为整数,float型数据在运算时一律先转换为双精度型,以提高运算精度(即使是两个float型数据相加,也先都转换为double型,然后再相加)。(4)赋值运算,如果赋值号“=”两边的数据类型不同,赋值号右边的类型转换为左边的类型。这种转换是截断型的转换,不会四舍五入。各类数值型数据间的混合运算:29强制转换强制转换是通过类型转换运算符来实现。一般形式:(类型说明符)表达式功能:把表达式的结果强制转换为类型说明符所表示的类型。(int)a将a的结果强制转换为整型量。(int)(x+y)将x+y的结果强制转换为整型量。(float)a+b将a的内容强制转换为浮点数,再与b相加说明:(1)类型说明和表达式都需要加括号(单个变量可以不加括号)(2)无论隐式转换,强制转换都是临时转换,不改变数据本身的类型和值。30强制类型转换main(){floatf=5.75;printf("(int)f=%d\n",(int)f);/*将f的结果强制转换为整型,输出*/printf("f=%f\n",f);/*输出f的值*/}结果:(int)f=5f=5.750000311.算术运算符和算术表达式2.赋值运算符和赋值表达式3.关系运算符和关系表达式4.逻辑运算符和逻辑表达式5.条件运算符和条件表达式6.逗号运算符和逗号表达式7.不同类型数据的混合运算运算符和表达式32第一节算术运算符和算术表达式基本的算术运算符自增和自减运算符33算术运算符和算术表达式C语言提供了算术运算符+(加法运算或正号运算符)-(减法运算或负号运算符)*(乘法运算符)/(除法运算符)%(求余运算符,或称模运算符)34算术运算符和算术表达式说明:两个整数相除结果为整数,如8/5的结果为1,舍去小数部分。如果参加运算的两个数中有一个数为实数,则结果是double型。求余运算要求%两侧都是整型数据。35算术运算符和算术表达式算术表达式用算术运算符和括号将运算量连接起来的式子称为算术表达式。如:-2+19.0/2*5%8运算符有优先级和结合性,在求表达式的值时,要按照优先级的高低依次计算,如果运算符两侧优先级相同,则按规定的结合方向进行。结合性从左到右36算术运算符和算术表达式优先级-(负号运算符)*/%

+-(加减运算符)

我最高!

我最低!37自增和自减运算符++运算符的作用是使变量的值增1。--运算符的作用是使变量的值减1。常见的用法有:++i,--i在使用i前,先使i的值加1i++,i--在使用i后,先使i的值加138例题已知i=5j=i++;j=?i=?j=++i;j=?i=?566639自增和自减运算符注意:

1自增和自减运算符只能用于变量,表达式(x+y)++是不合法的。2自增和自减运算符的结合方向是“自右向左”。如表达式-i++等价于-(i++)。具有一定的二义性,使用时请慎重!如:设i原值是3,则(i++)+(i++)+(i++)的值可能是9,也可能是1240

回顾上节课内容各种数据类型的常量与变量运算符和表达式41例inti;i=2.56;结果i=2例

floatf;inti;i=10;f=i;f=10.0计算a=(b=10)/(c=2)值表达式值5,a=5,b=10,c=242算术运算符和表达式基本算术运算符:+-*/%结合方向:从左向右优先级:->*/%>+-

说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据例5/2=2-5/2.0=-2.5例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2

()43自增、自减运算符++--作用:使变量值加1或减1种类:前置++i,--i(先执行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再执行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;

说明:++--不能用于常量和表达式,如5++,(a+b)++++--结合方向:自右向左优先级:-++-------->*/%----->+-

例-i++-(i++)i=3;printf(“%d”,-i++);-3441.算术运算符和算术表达式2.赋值运算符和赋值表达式3.关系运算符和关系表达式4.逻辑运算符和逻辑表达式5.条件运算符和条件表达式6.逗号运算符和逗号表达式运算符和表达式45第二节赋值运算符和赋值表达式赋值运算符赋值表达式赋值运算符的结合性46赋值运算符简单的赋值运算符复合的赋值运算符=+=-=*=%=/=47赋值运算符简单的赋值就是把一个表达式的值赋给一个变量。例如:

i=5;

i=j+1;48

i+=2等价于i=i+2a*=b+5等价于a=a*(b+5)x%=3等价于x=x%3赋值运算符在赋值符“=”之前加上其它运算符,可以构成复合的运算符。例如:C语言采用这种复合运算符,一是为了简化程序,使程序精炼;二是为了提高编译效率。49赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。形式:

〈变量〉〈赋值运算符〉〈表达式〉

例如:x=3;y=x+3。对赋值表达式求解的过程是:将赋值运算符右侧的表达式的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。50结合性

例如:

a=(b=8)

赋值运算符的结合性从右向左51下面程序段的输出结果是:inta=5,b=5;a%=b+=a+=(a+b);printf(“a=%d,b=%d”,a,b);

练习1:a=15,b=2052下面程序段的输出结果是:inta=10,b=10;a+=b-=a*=b/=3;printf(“a=%d,b=%d”,a,b);

练习2:a=3,b=-2753第三节关系运算符和关系表达式关系运算符优先级

<<=>>=

==!=高低54关系运算符算术运算符关系运算符赋值运算符高低55关系表达式概念用关系运算符将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为关系表达式。关系表达式的值为逻辑值“真”或“假”,以1代表“真”,以0代表“假”。例如关系表达式“8==4”的值为“假”,表达式的值为0。关系表达式“5>0”的值为“真”,表达式的值为1。56关系运算符的结合性结合性从左向右57第四节逻辑运算符和逻辑表达式逻辑运算符优先级

!(逻辑非)

&&(逻辑与)

||(逻辑或)

58逻辑运算的真值表

ab !a !b a&&b a||b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假

59

!(非)高算术运算符关系运算符

&&||

赋值运算符低逻辑运算符例如:x<y&&m<n

a==b||c==d

!a&&b>c

等效于(x<y)&&(m<n)等效于(a==b)||(c==d)等效于(!a)&&(b>c)60逻辑表达式逻辑表达式的值是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑结果时,以数值1代表“真”,以0代表“假”;但是在判断一个量是否为“真”时,以非0代表“真”,以0代表“假”。例如:

若x=10,则!x的值为

若a=3,b=2,则a&&b的值为

5&&0||8的值为01161逻辑运算符的结合性结合性从左向右例如:

5>3&&4||8<4的结果为

162逻辑运算符的特点特点在逻辑表达式的求解中并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行下一个运算符。

温馨提示

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

评论

0/150

提交评论