第02章基本数据类型ppt课件_第1页
第02章基本数据类型ppt课件_第2页
第02章基本数据类型ppt课件_第3页
第02章基本数据类型ppt课件_第4页
第02章基本数据类型ppt课件_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第2 2章章 根本数据类型、运算符和表达根本数据类型、运算符和表达式式本章要点本章要点l掌握c言语中的数据类型l掌握常用的表达式方式,以及运算符的优先级和结合性。l X+y/3 X=Y=3成果、工资、平均体重、价钱类型?范围?精度?内存构造?运算?2第第2 2章章 根本数据类型、运算符和表达式根本数据类型、运算符和表达式l2. 12. 1变变量和常量量和常量 l2 22 2 根本根本数数据据类类型型l2 23 3 整型整型l2 24 4 实实型型 l2 25 5 字符型字符型 l2 26 6 运运算符和表算符和表达达式式 l2 27 7 根本的根本的输输入入输输出函出函数数l2 28 8总

2、结与总结与提高提高 32.1变量和常量变量l数学中的变量是指其值可以变化的量,程序中的变量是指可多次赋值的量。l变量有三个要素,变量类型、变量名和变量地址。 例2-1 变量的运用main() int x, y, sum; printf(“nplease input two integers:); scanf(%d%d, &x, &y); /*输入两个整数*/ sum=x+y; /*两个整数求和*/ printf( nThe sum is %d, sum); /*将和输出*/ 42.1变量和常量变量l不同的数据类型,其占用的内存空间普通不一样,存储格式也能够不一样,表示范围和精度

3、都有区别。 l在Turbo c中,命名变量的规那么如下:l-必需以字母或下划线开头,后面可以是字母、数字或下划线;l-ANSI C规范没有规定变量名的长度字符个数,但各个c编译系统都有本人的规定。为了程序具有较好的可移植性和阅读程序的方便,变量名普通不要超越16个字符;l-变量名区分大小写,如变量名abc与变量名ABC是不同的变量;l-变量名不能运用系统的关键字或称保管字52.1变量和常量变量lC言语中的关键字有共32个:l auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto

4、、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while。 62.1变量和常量变量l例如:以下是合法的变量名:l l以下是不合法的变量名:lSUM,_total,_ch1,employee_name,p_1M.D.John, $876,3D67,ab,int72.1变量和常量常量l相对变量的概念就是常量,也称为常数。在程序运转过程中,其值不能被改动的量称为常量。详细来说有两类: 普通常量符号常量3,7.56,a,I love ,

5、#difine PI 3.1482.1变量和常量常量例2-2 符号常量的例子#define PI 3.14main()float r, area; printf(“nPlease input the radius:); scanf(%f, &r); /*输入某圆的半径*/ /*PI=3.1415926;此句错误,不能经过编译,由于PI是符号常量,不能重新赋值。*/ area=PI*r*r; /*计算该圆的面积*/ printf(nThe area of the circle is:%f, area); /*输出该圆的面积*/92.1变量和常量常量l问题:运用符号常量有什么益处?102

6、22 2 根本数据类型根本数据类型 lC言语数据类型数据类型构造类型根本类型指针类型整型空类型浮点型构造体字符型枚举类型单精度型双精度型共用体数组类型图21 C言语数据类型112 23 3 整型整型整型常量整型常量 l在言语中,运用的整型常量有十进制、八进制和十六进制三种,用不同的前缀来标识不同进制的整型常量,用不同的后缀来标识不同类型的整型常量。l1十进制整常量:其各位数为09,但最高位不能为0除了0这个数字外。例如,22,0,-56等是合法的十进制整常数;而01、726C不是十进制整常数。l2八进制整常量:八进制整常量必需以数字0开头,即以0作为八进制数的前缀。各位数取值为07。 122

7、23 3 整型整型整型常量整型常量l以下各数是合法的八进制数:l-01 (十进制为1)、0101(十进制为65)、0177777(十进制为65535);l以下各数不是八进制数(Why):l-25、07C2。 l3十六进制整常量:十六进制整常量的前缀为0X或0 x。十六进制需求十六个字符来表示各位能够出现的数符,这些字符规定为09,AF或af。 132 23 3 整型整型整型常量整型常量l以下各数是合法的十六进制整常量:l-0X4B(十进制为75)、0X10 (十进制为16)、0XFFFF (十进制为65535);l以下各数不是十六进制整常量:l-5A (无前缀0X)、0X5H (含有非十六进制

8、数码)。 142 23 3 整型整型整型常量整型常量l4整型常量的后缀:在16位字长的机器上,根本整型的长度为16位,因此表示的数的范围也是有限定的。l留意:八进制整型常量和十六进制整型常量都只能表示正整数,因此16位取值范围是0+65535,而十进制整型常量可以是负数,取值范围为-32768+32767。假设运用的数超越了上述范围,那么要用相应的后缀来标明。 152 23 3 整型整型整型常量整型常量l超范围的数用长整型数来表示关于整型数据类型,参考本章2.3.2节。长整型数是用后缀“L或“l来表示的。l 例如:l 十进制长整型常数:例如32L (十进制为32)、1234567L (十进制为

9、1234567);l 八进制长整型常数:例如040L (十进制为32)、0300000L (十进制为98304);l 十六进制长整型常数:例如0X20L (十进制为32)、0XFFFFL (十进制为65535)。l 留意:整数32L和根本整常数32在数值上并无区别但是在内存中,32L占用4个字节空间,而32只占用2个字节的空间,因此是不一样的。 162 23 3 整型整型整型常量整型常量l假设要表示一个无符号数,整型常数的后缀为“U或“u。l例如:l-358u,0 x38Au,235Lu均为无符号数。l前缀和后缀可同时运用以表示各种类型的数。如0XB7CLu表示十六进制无符号长整数B7C,其十

10、进制数为2940。 2 23 3 整型整型整型常量整型常量172 23 3 整型整型整型常量整型常量例2-3各进制整数的输出。main() int i; i=167; printf(ni=167); printf(nThe decimal form is %d, i); /*以十进制格式显示*/ printf(nthe octonary form is %o, i); /*以八进制格式显示*/ printf(nthe hexadecimal form is %x, i); /*以十六进制格式显示*/ i=0167; 182 23 3 整型整型整型常量整型常量 printf(ni=0167);

11、printf(nThe decimal form is %d, i); printf(nthe octonary form is %o, i); printf(nthe hexadecimal form is %x, i); i=0 x167; printf(ni=0 x167); printf(nThe decimal form is %d, i); printf(nthe octonary form is %o, i); printf(nthe hexadecimal form is %x, i);192 23 3 整型整型整型常量整型常量l运转该程序后,其结果为: i=167The de

12、cimal form is 167The octonary form is 247The hexadecimal form is a7i=0167The decimal form is 119The octonary form is 167The hexadecimal form is 77i=0 x167the decimal form is 359the octonary form is 547the hexadecimal form is 167202 23 3 整型整型整型变量整型变量l整型变量分类。l短整型根本整型长整型。在16位字长的机器中,根本整型变量占2个字节。 有无符号位有符

13、号整型无符号整型有无符号位短整型长整型根本整型2*3=6类212 23 3 整型整型整型变量整型变量l1整数的机内表示 假设声明一个整型变量:int i;i=876;由于876292826252322,所以在机内二进制的表示方式如图2-2所示共占16位: 图22 876在内存中的表示0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0222 23 3 整型整型整型变量整型变量l无符号整型将一切的位均表示为数据,因此只需正数方式。有符号的整型将最高位用做符号位,最高位为“1表示负数,为“0表示正数。 数据在内存中是以二进制方式存放的数据在内存中是以二进制方式存放的。实践上,数值是以补码

14、表示的。实践上,数值是以补码表示的。 (1) (1) 对于正数,原码对于正数,原码 = = 反码反码 = = 补码。补码。 (2) (2) 对于负数,补码对于负数,补码 = = 反码反码 + 1 + 1。 (3) (3) 引入补码后,使减法一致为加法。引入补码后,使减法一致为加法。补补补补)(251032510325103 计算正数的补码计算正数的补码int 10; 原原 码:码: 反反 码:码: 补补 码:码: 00 00 00 00 00 00 10 1000 00 00 00 00 00 10 1000 00 00 00 00 00 10 10 计算负数的补码计算负数的补码int型型 -

15、10; 绝对值:绝对值: 1000 00 00 00 00 00 10 10二进制:二进制:11 11 11 11 11 11 01 01取取 反:反:11 11 11 11 11 11 01 10加加 1:反反 码码补补 码码请写出请写出2020、-20-20的补码的补码int 20; 原原 码:码: 补补 码:码: 00 00 00 00 00 01 01 0000 00 00 00 00 01 01 00int -20; 绝对值:绝对值:20 二进制:二进制: 取取 反:反: 加加 1: 00 00 00 00 00 01 01 0011 11 11 11 11 10 10 11 11

16、11 11 11 11 10 11 00 补补 码码272 23 3 整型整型整型变量整型变量l2整型变量的类型 数据类型类型说明符字节数表示范围无符号短整型unsigned short int2065535(0216-1)有符号短整型signed Short int2-3276832767(-215215-1)无符号整型unsigned int2065535有符号整型signed int2-3276832767无符号长整型unsigned long int404294967295有符号长整型signed long int4-21474836482147483647282 23 3 整型整型整

17、型变量整型变量l3整型变量的声明和赋值 l声明变量的格式为:l 变量类型 变量名;l下面是声明整型变量的例子:l short int x;l 声明了一个短整型的变量x。而l unsigned intl 那么声明了一个无符号的根本整型变量。292 23 3 整型整型整型变量整型变量l声明变量的时候要留意三点: 1允许一行声明多个同类型变量,各变量名间用“,逗号隔开;2变量必需先声明,然后才干运用 ;3在一个语句块中,程序中一切的变量该当一 起声明在开场处,不能反复声明。 302 23 3 整型整型整型变量整型变量例2-4整型变量的运用main() int a, b, c, d;/* 在程序段开场

18、处一同声明变量*/ unsigned u; a=12; b=-24; u=10;/*用常量为变量赋值*/ c=a+u; d=b+u; /* 用一个表达式为变量赋值*/ printf(na+u=%d,b+u=%d, c, d); 312 23 3 整型整型整型变量整型变量例2-5一个不正确的例子main() int x, y; y=x; printf(ny=%d, y);我错在那?呜呜呜322 23 3 整型整型整型变量整型变量l给整型变量赋值有很多方式 1声明时立刻赋值,称为初始化。例如:int x=3;int y=4, z=5;2先声明后赋值。 int x; x=3; 3经过格式化函数sca

19、nf从规范输入设备输入。 int x; scanf(“%d, &x); 332 23 3 整型整型整型变量整型变量l4整型值的输出。 也可以将整型常量或变量的值以十进制、八进制或十六进制的格式输出,例23阐明了这一点。 重要提示:数学上的整数可以无限大,但程序设计中整数在机内存储所占的内存有限,因此整型数据表示的范围有限,在平常的编程中,要特别留意不能把一个超越范围的数值赋值给一个整型变量。假设这样做了,那么这个整型变量现实上接受的不是料想中的值,称为“溢出。 342 23 3 整型整型整型变量整型变量例2-6整型数据的溢出。main() int a, b; a=32767; b=a+

20、1; printf(%d,%dn, a, b); 运转后,其结果为:32767,-32768352 23 3 整型整型整型变量整型变量l为什么会出错?0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1a=32767: 图25 整数溢出0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-32768362 24 4 实型实型实型常量实型常量 在C言语中,实数只采用十进制。根本的方式为:整数部分.小数部分但有两种表达方式: 1小数方式:由09和小数点组成。例如:035,167,6736,728.3 等。2指数方

21、式:由十进制实数,加阶码标志“e或“E以及阶码只能为整常量,可以带符号组成。其普通方式为: aEn或aena为十进制数,n为十进制整数表示的阶码其值为a10n。 372 24 4 实型实型实型常量实型常量l实型常量的例子l运用实型常量要留意以下几点:l (1)整数部分和小数部分可以省略其中的一个,例如,.36和200.都是合法的实型常量。l(2)用指数方式时,E或e两边都要有数字,但都只能是常量。l(3)实型分为单精度实型和双精度实型,但是实型常数不分单、双精度,都按双精度double型处置。036e2,表示0.36102;12.56E12,表示12.561012;3.89e3,表示3.891

22、03。382 24 4 实型实型实型变量实型变量l1实型数据的机内表示 l实型数据普通占4个字节32位内存空间,按指数方式存储。比照实数3.14159在内存中的存放方式 : +.3141591数符小数部分阶符阶数 小数部分占的位数愈多,数的有效数字愈多,精度愈高。 指数部分占的位数愈多,那么能表示的数值范围愈大。 392 24 4 实型实型实型变量实型变量l2实型变量的类型类型类型说明符比特数(字节数)有效数字表示范围单精度实型float32(4)67-3.410-373.41038 双精度实型double64(8)1516-1.710-3071.710308 长双精度实型long doubl

23、e 128(16)1819-1.210-49311.2104932 402 24 4 实型实型实型变量实型变量l3实型变量的声明和赋值 实型变量定义的格式和书写规那么与整型一样。例如: float x, y; (x,y为单精度实型量) double a, b, c; (a,b,c为双精度实型量) 412 24 4 实型实型实型变量实型变量实型变量赋值方式与整型变量类似,但是要留意的是从键盘输入时scanf()函数的类型阐明符为“%f:float x;x=scanf(“%f, &x);从键盘输入实数时可以用小数的方式或指数的方式输入。 422 24 4 实型实型实型变量实型变量l4实型值

24、的输出 l假设用printf函数输出,格式输出符是“%f,细节请参看本章2.7节。 432 24 4 实型实型实型变量实型变量l5实型数据的舍入误差例2-7 实型数据的舍入误差。main() float a, b; a=123456.789e5; b=a+20; printf(na=%f,b=%f,a,b);该程序的运转结果是:a=12345678848.000000,b=12345678848.000000442 25 5 字符型字符型字符常量字符常量 l字符常量是用单引号括起来的单个字符或本义字符。l例如:la、c、=、+、?l都是合法字符常量。留意,a和A是不同的字符常量。l在言语中,字

25、符常量有以下特点:l(1)字符常量只能用单引号括起来,不能用双引号或其它括号。l(2)字符常量只能是单个字符,不能是字符串。l(3)有些字符有特殊含义,如单引号“、双引号“等,还有一些字符不能或不方便直接从键盘输入,比如回车换行符、退格符等。这时可运用本义字符来表示。 452 25 5 字符型字符型字符常量字符常量转义字符转义字符的意义ASCII代码n回车换行(之后的内容到下一行)10t横向跳到下一制表位置9b退格(删除前一个字符)8r回车(回到本行开头)13f走纸换页12反斜线符92单引号符39”双引号符34a鸣铃7ddd13位八进制数所代表的字符xhh12位十六进制数所代表的字符462 2

26、5 5 字符型字符型字符常量字符常量 广义地讲,言语字符集中的任何一个字符均可用本义字符来表示。 表中的ddd和xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码ASCII表见附录1。 如101十进制为65表示字母A ,012十进制为10代表换行,376代表图形字符“,XOA表示换行等。特别留意0或000是代表ASCII码为0的控制字符,即“空操作。要留意的是,015表示回车,不换行,使得输出的当前位置移到本行开头,而n表示回车换行,使得输出的当前位置跳到了下一行的行首。 472 25 5 字符型字符型字符常量字符常量例2-8 本义字符的运用。main() printf

27、( ab ct derf012); printf( hi 101x61); 运转后其结果如下表示空格,本章其它地方出现这个符号,不作特别阐明的话也代表空格:fabcdehi Aa482 25 5 字符型字符型字符变量字符变量l1字符数据的机内表示01111000 每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的方式存放在变量的内存单元之中。 如x的十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a,b赋予x和y值: a=x; b=y; 实践上是在a,b两个单元内存放120和121的二进制代码,如图2-7所示: a: b:01111001

28、字符字符ASCIIASCII码表码表 5 p $ 2 2 2 + 2 = 4 值符号值符号值符号0空字符44,9132空格45-9233!46.933447/9435#48 570 9 95-36$58:9637%59;97 122a z38&6012541)63?12642*64127DEL (Delete键)43+65 90A Z 502 25 5 字符型字符型字符变量字符变量例2-9 把整数赋给字符变量。main() char a, b; a=x; /*将字符常量赋值给字符变量*/ b=120; /*将整型常量赋值给字符变量*/ printf(%c,%dn, a, a); pri

29、ntf(%c,%dn, b, b);运转后其结果是:x,120 x,120512 25 5 字符型字符型字符变量字符变量例2-10大小写转换main() char a, b; a=a; b=B; printf(n%c, %dn%c, %d, a, a, b, b); a=a-32; b=b+32; printf(n%c, %dn%c, %d, a, a, b, b);522 25 5 字符型字符型字符变量字符变量运转后,其结果是:a,97B,66A,65b,98532 25 5 字符型字符型字符变量字符变量l2字符变量的声明和赋值字符变量的声明格式为:char 变量名;例如:char x ,y

30、;该语句声明了两个字符变量x和y。字符变量声明后就可以赋值,对于声明的变量x可以这样赋值:x=x;留意,在该语句中,左边的x是变量,而右边的x是字符常量。542 25 5 字符型字符型字符变量字符变量 字符变量也可用本义字符赋值:x=b;该语句将退格符赋值给了x。也可以从规范输入设备输入字符给字符变量,如:scanf(“%c,&x)。由于scanf函数可以指定输入数据的类型,也称做格式化输入函数。552 25 5 字符型字符型字符串常量字符串常量l在C言语中,没有为字符串定义变量类型,也就是说,没有字符串变量这个概念。但是有字符串常量的概念。日常生活中的人名、书名等,都要用字符串来描画

31、。字符串可以存储在后面将要学到的数组或指针类型变量中。l字符串常量是由一对双引号括起的字符序列。例如: “CHINA,“C program,“$12.5 等都是合法的字符串常量。l假设要将双引号“作为字符串的一部分,那么就需求运用本义字符。例如:“the number 5,该字符串就是平常了解的the number “5。562 25 5 字符型字符型字符串常量字符串常量l字符串常量和字符常量是不同的量。它们之间主要有以下区别:l(1)从书写格式上看,字符常量由单引号括起来,字符串常量由双引号括起来。l(2)从方式上看,字符常量只能是单个字符,字符串常量那么可以含一个或多个字符。l(3)从赋值

32、方式上看,可以把一个字符常量赋值给一个字符变量,但不能把一个字符串常量赋值一个字符变量。在言语中没有相应的字符串变量,但是可以用一个字符数组或字符指针变量来存放一个字符串常量。在数组一章内予以引见。572 25 5 字符型字符型字符串常量字符串常量(4)从内存格式上看,字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。添加的一个字节中存放字符“0 (ASCII码为0)。这是字符串终了的标志。例如:字符串 “C program 在内存中所占的字节为如图2-8所示。CprOgram0582 25 5 字符型字符型字符串常量字符串常量l字符常量a和字符串常量“a虽然都只需

33、一个字符,但在内存中的情况是不同的。 l思索:语句“printf(“I like 0 c)执行的结果是什么?l答案: I like 592 26 6 运算符和表达式运算符和表达式运算符简介运算符简介 l算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算, %)、自增(+)、自减(-)、强迫类型转换共八种。l关系运算符:用于比较运算。包括大于()、小于(=)、小于等于(=)和不等于(!=)六种。l逻辑运算符:用于逻辑运算。包括与(&)、或(|)、非(!)三种。l位操作运算符:参与运算的量按二进制位逐位进展运算。包括按位与(&)、按位或(|)

34、、按位非()、按位异或()、左移()六种。 602 26 6 运算符和表达式运算符和表达式运算符简介运算符简介l赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,=,=,=)三类共十一种。l条件运算符:这是一个三目运算符,用于条件求值?:)。l逗号运算符:用于把假设干表达式组合成一个表达式(,)。l指针运算符:用于取内容(*)和取地址(&)二种运算。l求字节数运算符:用于计算数据类型所占的字节数(sizeof)。l特殊运算符:有括号(),下标,成员(,.)等几种。 612 26 6 运算符和表达式运算符和表达

35、式算术运算符和算算术运算符和算术表达式术表达式 l1根本的算术运算符l加法运算符“+:加法运算符为双目运算符,即应有两个量参与加法运算。如a+b,4+8等。l减法运算符“-:减法运算符为双目运算符。但“-也可作负值运算符,此时为单目运算。l乘法运算符“*:双目运算符。l除法运算符“/:双目运算符。参与运算的量均为整型时,结果为舍去小数整型数;假设运算量中有一个是实型,那么结果为双精度实型数。l求余运算符(也称模运算符)“%:双目运算符。要求参与运算的量均为整型。求余运算的结果等于两数相除后的余数。 622 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式例2-

36、11两数相除。main() printf(n%d, %d, 20/7, -20/7); printf(n%f, %f, 20.0/7, -20.0/7);该程序的运转结果为:2,-22.857143,-2.857143“/两个操作数假设都为整形,结果为整形,假设有一个为实型,结果即为实型。632 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式例2-12除法与求余。main() printf(n%d, %d, 100/3, 100%3);该程序运转后的输出为:33,1 642 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式l

37、2算术表达式和运算符的优先级和结合性l表达式是由常量、变量、函数和运算符组合起来的式子。表达式有相应类型的值,它们等于计算表达式所得结果。表达式求值按运算符的优先级和结合性规定的顺序进展。单个的常量、变量、函数可以看作是表达式的特例。 652 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式l算术表达式:用算术运算符和括号将运算对象算术表达式:用算术运算符和括号将运算对象也称操作数衔接起来的、符合也称操作数衔接起来的、符合C C语法规那么的语法规那么的式子,例如式子,例如a+ba+b* *3+c/23+c/2。 例2-13表达式的值main() int a,

38、b; a=5; b=7; printf(n(a*2)/b=%d, (a*2)/b);其运转结果为:(a*2)/b=1662 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式l2 2运算符的优先级和结合性运算符的优先级和结合性 在表达式求值的时候,先按运算符的优先级别从高到低进展,假设运算量两侧的运算符优先级一样时,那么按运算符的结合性所规定的结合方向处置优先级一样的一切运算符结合方向一样,因此不会有矛盾。 算术运算符的优先级别从小到大是:先乘除*、/和%的等级一样,后加减和的等级一样。 假设有a+b/c ,由于除运算比加运算优先级高,因此先算除法,再将其结果与

39、a相加。 672 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式 言语中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。 例如算术运算符的结合性是自左至右。如有表达式a+b-c,那么b应先与“+号结合,执行a+b运算,然后再执行-c的运算。 C言语中各种运算符及其优先级和结合性请参看附录3,了解运算符的优先级和结合性才干真正了解表达式的合法性和运算过程。 682 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式l3强迫类型转换运算其普通方式为: (类型阐明符) (表达式)其功能是把表达式的运算结果强迫

40、转换成类型阐明符所表示的类型。例如: (float) a 把a转换为实型 (int)(x+y) 把x+y的结果转换为整型 692 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式假设有下述语句: int i; float x=3.6; i=(int)x;/*不能省略括号*/ 那么i的值为3。留意:x本身的值还是3.6。 类型转换还有一种,就是自动转换,请看下面的语句: int i=3; float x; x=i; 在这里, 语句x=i不需求写成x=(float)i,其转换是自动完成的。 702 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算

41、术表达式术表达式l4自增、自减运算符 自增1运算符记为“+,其功能是使变量的值自增1。自减1运算符记为“-,其功能是使变量值自减1。 自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种方式:712 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式1+i i自增1后再参与其它运算。例如,假设i和j为曾经声明好的整型变量:j=+i相当于留意两个语句的先后顺序,不能颠倒: i=i+1; j=i;2-i i自减1后再参与其它运算。例如:j=-i;相当于:i=i-1;j=i;722 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术

42、表达式3i+ i参与运算后,i的值再自增1。例如:j=i+;相当于:j=i;i=i+1;4i- i参与运算后,i的值再自减1。例如:j=i-;相当于:j=i;i=i-1;例:例: j = 3; k = +j; j = 3; k = +j; j = 3; k = j+; j = 3; k = j+; j = 3; printf ( j = 3; printf (“%d%d, +j), +j); ; j = 3; printf( j = 3; printf(“%d%d, j+); , j+); a = 3; b = 5; c = (+a) a = 3; b = 5; c = (+a) * * b

43、b; ; a = 3; b = 5; c = (a+) a = 3; b = 5; c = (a+) * * b b; ; /k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4/4/3/3/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4732 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式 自加自减运算用法灵敏,出如今较复杂的表达式或语句中时,经常难以弄清,因此应仔细分析。 例如,设i,j都为整型,j=i+合法,而j=(i+)+却不合法,由于(i+)是表达式,不能在用+运算了。另外,碰到繁难的表达式,必要的时候可以编写

44、程序运转,经过结果反推其运算过程。 742 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式例2-14 自加自减运算main() int i=5; printf(n%d, -i+); printf(n%d, -+i); 其运转的结果为:-5-7752 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式例2-15 复杂的自加自减运算main() int i=5, j=5, k=5, p, q, r; p=(i+)+(i+)+(i+); q=(+j)+(+j)+(+j); r=k+1; printf(ni=%d, p=%d, i,

45、p); printf(nj=%d, q=%d, j, q); printf(nk=%d, r=%d, k, r);762 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式该程序运转结果为:i=8, p=15j=8, q=24k=6, r=6772 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式l5各数值类型数据间的混合运算 整型、字符型和实型之间可以混合运算,但在运算的时候,不同类型的数据需求进展自动转换,其规律是:1字符型(char)和短整型short必定先转换为整型int;2float型一概转换为double型可以提高运

46、算精度;782 26 6 运算符和表达式运算符和表达式算术运算符和算算术运算符和算术表达式术表达式3当运算对象为不同类型时,转换方向是:intunsignedlongdouble 例如:int型与double型运算,先将int型对象转换为double型后运算。792 26 6 运算符和表达式运算符和表达式赋值运算符和赋赋值运算符和赋值表达式值表达式 l1简单赋值运算符 简单赋值运算用“表示,根本格式为: 变量表达式 其含义是把右边的表达式的值赋给左边的变量。也可以用连等的方式: 变量1变量2变量n=表达式。例如: i=j=5设i和j为整型变量;留意赋值运算是右结合的,因此连等相当于: 变量n=

47、 表达式; 变量n-1=变量n; ; 变量1变量2; 802 26 6 运算符和表达式运算符和表达式赋值运算符和赋赋值运算符和赋值表达式值表达式 下面给出一些赋值表达式的例子: x=a+b w=sin(a)+sin(b) y=i+ + + - -j a=b=c=5可了解为a=(b=(c=5) 可以说,凡是表达式可以出现的地方均可出现赋值表达式。 例如,式子: x=(a=5)+(b=8) 812 26 6 运算符和表达式运算符和表达式赋值运算符和赋赋值运算符和赋值表达式值表达式l2复合赋值表达式 赋值符“=之前加上其它一些运算符可构成复合赋值符。如+=,-=,*=,=,%=,=,&=,=

48、,|=。 构成复合赋值表达式的普通方式为: 变量 双目运算符=表达式 它等效于 变量=变量 运算符 (表达式) 例如: a+=5 等价于a=a+5 x*=y+7 等价于x=x*(y+7) r%=p 等价于r=r%p 留意有个括号822 26 6 运算符和表达式运算符和表达式赋值运算符和赋赋值运算符和赋值表达式值表达式l3赋值运算中的类型转换1实型赋予整型,舍去小数部分。2整型赋予实型,数值不变,但将以浮点方式存放,即添加小数部分(小数部分的值为0)。3字符型赋予根本整型,由于字符型为只占一个字节,而整型占二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位的值根据不同的系统确定能否进

49、展符号扩展。4短整型根本整型赋予长整型,与字符型赋予根本整型类似,将整个数据写入长整型的低16位,高16位的值也根据系统来确定能否进展符号扩展。5整型赋予字符型,只把低八位赋予字符量。 832 26 6 运算符和表达式运算符和表达式赋值运算符和赋赋值运算符和赋值表达式值表达式例2-16 类型转换程序之一。main() int a; long int b=112768; a=b; printf(n%d, a);其运转结果为:18304842 26 6 运算符和表达式运算符和表达式赋值运算符和赋赋值运算符和赋值表达式值表达式例2-17类型转换程序之二。main() int a, b=322,c;

50、char c1=a, c2; float x, y=35600.35; a=y; x=b; c=c1; c2=b; printf(na=%d, x=%f, c=%d, c2=%d, a, x, c, c2);该程序运转的结果是:a=29936,,x=322.000000,c=97,c2=66852 26 6 运算符和表达式运算符和表达式关系运算符和关关系运算符和关系表达式系表达式 关系运算符是用于两两之间比较大小,C言语提供了6种关系运算符: 小于、大于、=大于或等于、=等于、!=不等于。 关系表达式的格式为: 表达式1 关系运算符 表达式2 例如: a9 862 26 6 运算符和表达式运算

51、符和表达式关系运算符和关关系运算符和关系表达式系表达式 可以以为关系表达式的值为“真True或“假false,但是C言语中没有逻辑量。关系表达式的值要么是1,要么是0。假设关系成立,那么关系表达式的值为1,否那么为0。 表达式的值(3+4)9的值为0,可以用printf(“%d,(3+4)9)语句来验证。第三章中将进一步讲述关系表达式的运用。 872 26 6 运算符和表达式运算符和表达式逻辑运算符和逻逻辑运算符和逻辑表达式辑表达式 C言语提供三种逻辑运算符: &逻辑与、|逻辑或、!逻辑非。 由逻辑运算符构成的表达式为逻辑表达式。 &运算要求两个操作数,当两个操作数都为“真时表

52、达式的值为“真,否那么为假; |运算也需求两个操作数,当其中之一为“真时,整个表达式就为“真,否那么为假; !为单目运算符,假设操作数为“真,那么其逻辑非为“假,假设操作数为“假,那么其逻辑非为“真。 第三章进一步讲述关系表达式的运用。 882 26 6 运算符和表达式运算符和表达式逗号运算符和逗逗号运算符和逗号表达式号表达式 在言语中逗号“,也是一种运算符,称为逗号运算符。 其功能是把两个表达式衔接起来组成一个表达式, 称为逗号表达式。 其普通方式为:表达式1,表达式2,表达式nn=2。 其求值过程是分别求各个表达式的值,并以表达式n的值作为整个逗号表达式的值。892 26 6 运算符和表达

53、式运算符和表达式逗号运算符和逗逗号运算符和逗号表达式号表达式例2-18 逗号表达式的值main() int a=2, b=4, c=6, x, y, z; y=(x=a+b), (b+c); z=(x=a+b), (b+c); printf(ny=%d, x=%d, z=%d, y, x, z);本程序的结果为:y=6,x=6,z=10902 26 6 运算符和表达式运算符和表达式逗号运算符和逗逗号运算符和逗号表达式号表达式l逗号表达式普通方式中的表达式也可以又是逗号表达式。l 例如:l表达式1,(表达式2,表达式3)l 构成了嵌套情形。上面整个表达式的值就是表达 式3的值。l程序中运用逗号表

54、达式,那么分别求逗号表达式内各表达式的值,并不一定需求将整个逗号表达式的值赋给某一变量。912 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数 l两种调用方式l格式控制字符串的普通方式为: printfprintf“字符串;字符串;printf(“printf(“格式控制字符串,输出表列格式控制字符串,输出表列) ); %flagwidth.prechlL%flagwidth.prechlL输出格式字符输出格式字符 922 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数lprintf的格式字符 输出类型格式控制符格式字符意义mld

55、或mli以十进制形式输出带符号整数(正数不输出符号),方括号中内容可选,m为整数,指定输出字段的宽度和对齐方式。l用于输出长整型。l0以八进制形式输出无符号整数(不输出前缀O)。l用于输出长整型。lx或lX以十六进制形式输出无符号整数(不输出前缀OX)。l用于输出长整型。lu以十进制形式输出无符号整数。l用于输出长整型。m.nf以小数形式输出单、双精度实数。方括号中内容可选,指定输出字段的宽度和小数位数。932 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数C输出单个字符。ms或m.ns输出字符串, 方括号中内容可选,m指定输出宽度和对齐方式。n用于截取字符串中

56、的一段用于显示。m.ne或m.nE以指数形式输出单、双精度实数。m.n可选,含义同上。g,G以%f或%e中较短的输出宽度输出单、双精度实数。942 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数对上表的格式控制符阐明如下:1%d格式符:用来输出十进制整数,有以下几种用法: %d:按数据实践长度输出。 %md:m为指定的输出字段的宽度。m0时,假设数据的位数小于|m|,那么左端补以空格;假设m0,当数据的位数小于|m|,那么右端补空格。假设数据位数大于|m|,那么按实践位数输出。%ld:输出长整型数据,如 long a=123560; printf(“%ld,a)

57、; 如用%d输出长整型数据,就会发生错误,因此long型数据应该用%ld格式输出。对长整型数据也可指定字段宽度,如用“printf(“%9ld,a);语句,其结果为:123560共9列。952 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数2%o格式符:以8进制方式输出整数。例如:int a=-1;printf(“%d, %o , a, a);输出结果为:-1,37777777777%lo用于输出八进制长整型。962 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数3%x格式符:以16进制方式输出整数。例如:int a=-1;pri

58、ntf(“%x, %o, %d , a, a, a);输出结果为:ffffffff,37777777777,-1%lx含义是以16进制方式输出长整型数据。4%u格式符:以十进制方式输出无符号数,例如地址值。972 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数l5%f格式符:用来以小数方式输出实数包括单、双精度,有以下几种用法: %f:不指定字段宽度,由系统自动指定,使整数部分原样输出,并输出6位小数。单精度实数的有效位数普通为7位。双精度数也可用%f格式输出,它的有效位数普通为16位,小数部分为6位。982 27 7 根本的输入输出函数根本的输入输出函数pri

59、ntfprintf函数函数例2-19 %f的用法。#includemain() float x, y; double u, v; x=111111.111; y=222222.222; u=1111111111111.111111111; v=2222222222222.222222222; printf(n%f, x+y); printf(n%f, u+v);992 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数输出结果为:333333.3281253333333333333.3330101002 27 7 根本的输入输出函数根本的输入输出函数printfpr

60、intf函数函数l%m.nf:指定输出的数据共占|m|列,其中有n位小数不含小数点。当m0时,假设数值长度小于|m|,那么左端补空格;当m0时,假设假设数值长度小于|m|,那么右端补空格。1012 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数例2-20 %m.nf的用法。#includemain() float f=1234.56789; printf(n%f, %10f, %10.2f, %.2f, %-10.2fn, f, f, f, f, f);输出结果如下:1234.567871,1234.567871, 1234.57,1234.57,1234.57 1022 27 7 根本的输入输出函数根本的输入输出函数printfprintf函数函数l6%c格式符:输出一个字符。例如:char c=a;

温馨提示

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

最新文档

评论

0/150

提交评论