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

下载本文档

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

文档简介

1、2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 1C C语言程序设计语言程序设计 第第2 2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 2【学习目标学习目标】掌握掌握C C语言的基本数据类型语言的基本数据类型掌握常量的使用掌握常量的使用掌握掌握变量变量的定义与使用的定义与使用掌握掌握运算符运算符的应用的应用掌握掌握C C语言提供的常用库函数语言提供的常用库函数2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 32

2、.2 2.2 变量和常量变量和常量2.3 2.3 运算符和表达式运算符和表达式第第2 2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式2.4 2.4 数据类型转换数据类型转换2.5 2.5 数据的输入输出数据的输入输出2.6 2.6 系统系统函数函数2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 4为了更好地对数据进行存储和处理,为了更好地对数据进行存储和处理,语言中的数据类型可分为:语言中的数据类型可分为:基本数据类型,基本数据类型,构造数据类型,指针类型,空类型构造数据类型,指针类型,空类型四大类四大类程序中要对各种各样的数据进行描述

3、和程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型。数据操作,用到的数据都必须指明其类型。数据类型的作用:类型的作用:指出了应为数据分配的存储空间的大小指出了应为数据分配的存储空间的大小规定了数据所能进行的操作规定了数据所能进行的操作P102022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 5整型(整型(int)数据类型数据类型基本类型基本类型整型整型单精度型(单精度型(float)字符型(字符型(char)长整型(长整型(long)短整型(短整型(short)实型实型双精度型双精度型(double)枚举类型(枚举类型(enum)共用体类型

4、(共用体类型(union)构造类型构造类型结构体类型(结构体类型(struct)数组类型数组类型空类型(空类型(void)指针类型(指针类型(*)教材教材P1062.1.1 2.1.1 整型整型整型常量即整常数。 C语言定义了6种整型,分别是:基本(标准)整型 int短整型 short或short int 长整型 long或long int无符号基本整型 unsigned int无符号短整型 unsigned short无符号长整型 unsigned long7 类型匹配规则:一个整型常量,可类型匹配规则:一个整型常量,可以赋给能容纳下其值的整型变量以赋给能容纳下其值的整型变量82.1.2 2

5、.1.2 实型实型实型数据又称浮点型数据。共有三种表示实数的类型:float,单精度浮点数类型。double,双精度浮点数类型。long double,长双精度类型。92.1.3 2.1.3 字符型字符型字符型的数据即通常的字符。字符类型的数据包括计算机所用编码字符集中的所有字符。常用的ASCII字符集包括所有大小写英文字母、数字、各种标点符号字符,还有一些控制符,一共128个。2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 102.1 数据类型2.3 运算符和表达式2.4 数据类型转换2.5 数据的输入输出2.6 系统函数2022-5-31第第2章章

6、基本数据类型、运算符和表达式基本数据类型、运算符和表达式 11u对于基本数据类型量,按其取值是否可改变又分对于基本数据类型量,按其取值是否可改变又分为为常量和变量常量和变量两种。两种。在程序执行过程中,其值不发生改变的量称为常量,在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。其值可变的量称为变量。u与数据类型结合起来分类,分为整型常量、整型与数据类型结合起来分类,分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。枚举常量、枚举变量。在程序中,常量是可以不经说明而直接引用的,而在程序中,常量是可

7、以不经说明而直接引用的,而变量则必须先定义后使用变量则必须先定义后使用。P122022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 12P122.2.1 变量p变量是指在程序运行过程中其值可以被改变的量。一个变量有三个相关的要素:变量名变量的数据类型变量的值程序中一个变量只能属于一个类型,即一旦定义了不能再更改。2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 13l变量名代表该变量的存储单元及其存放的变量名代表该变量的存储单元及其存放的值,系统为不同类型的变量在内存中开辟值,系统为不同类型的变量在内存中开辟不同的存储单元

8、,以便存放相应类型的值;不同的存储单元,以便存放相应类型的值;不同类型的变量存放数据的方法也不相同。不同类型的变量存放数据的方法也不相同。 系统还根据变量的类型检查该变量所进系统还根据变量的类型检查该变量所进行的运算是否合法,例如只有整型变量和行的运算是否合法,例如只有整型变量和整数才能参与求余(整数才能参与求余(%)运算)运算。P122022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 141. 1.变量的定义和赋值变量的定义和赋值pC语言中变量必须“先定义,后使用”。可以在变量的声明语句中同时定义变量的初始化,即赋初值。声明变量语句的形式为:类型类型 变量

9、名变量名=初值初值,变量名,变量名=初值初值 注:若未赋初值,一般默认初值为随机数。注:若未赋初值,一般默认初值为随机数。p注意:注意:数学中的数学中的“=”符号不同于符号不同于C语言中的赋语言中的赋值符号值符号“=”,在,在C语言的语言的a=a+1是成立的,表示是成立的,表示“a加上加上1的值赋给变量的值赋给变量a”。在。在C语言中判断两个语言中判断两个数是否相等时使用符号数是否相等时使用符号“=”。教材教材P13变量应先定义,后赋值,再参与运算。变量应先定义,后赋值,再参与运算。15pC语言变量命名规则: C语言中,变量只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。具体命名

10、规则如下: 1)只能由下划线、数字0-9与a-z,A-Z构成。 2)变量名首字符必须是字母或下划线。 3)C语言中大小写字母是敏感的,代表不同的意义。如:Str和str是两个不同的变量。Int? 4)变量名不能为系统关键字。p习惯上,变量名用小写字母表示,名字要“见名知义”。16l例如 int a; float f; int x,y,min; int m,n=3,w=5;l以下为非法定义: int a=b=c=5; 正确的形式是: int a=5,b=5,c=5; 或 int a,b,c; a=b=c=5;类型类型 变量名变量名=初值初值,变量名,变量名=初值初值 问题:问题:float sc

11、ore.a=90;score.b=80;score.c=70;score.d=60;定义正确么?定义正确么?/ /* * 赋值示例赋值示例* */ /#include main()int a1,a2,a3,x;int a4=10;int a5=20,a6=100;float f;a1=1;a2=2;a3=3;f=12;x=A;printf(a1=%d,a2=%d,a3=%d,a4=%d,a5=%d,a6=%dn,a1,a2,a3,a4,a5,a6);printf(f=%f,x=%dn,f,x);/ /* * 赋值示例赋值示例* */ /#include main()int a1,a2,a3,x

12、;int a4=10;int a5=20,a6=100;float f;a1=1;a2=2;a3=3;f=12;x=A;int a1,a2,a3,x,a4=10,a5=20,a6=100;printf(a1=%d,a2=%d,a3=%d,a4=%d,a5=%d,a6=%dn,a1,a2,a3,a4,a5,a6);printf(f=%f,x=%dn,f,x);182. 变量中数据的存储p对于无符号整数,其存储较简单,存储单元的0或1均表示数。p如何表示有符号整数? 原码:原码:二进制数的最高位为符号位,如果符号位二进制数的最高位为符号位,如果符号位为为0,则为正数;如果符号位为,则为正数;如果符

13、号位为1,则为负数。,则为负数。 反码:反码:正数的反码和原码相同,负数的反码为除正数的反码和原码相同,负数的反码为除符号位以外的稳中有各位取反。符号位以外的稳中有各位取反。 补码:补码:正数的补码和原码相同,而负数的补码为正数的补码和原码相同,而负数的补码为其反码加其反码加1.19机器字长为机器字长为8位二进制数:位二进制数:例:例:+97-97+97-97原码原码01100001B11100001B反码反码01100001B10011110B补码补码01100001B10011111B计算机中的负数用补码表示。20已知补码求真值:当机器数的最高位(符号位)为0时,真值为正,值等于其余n-1

14、位的值;当机器数的最高位(符号位)为1时,真值为负,值等于其余n-1位按位取反,末尾+1的值。补码表示的整数范围是:-2n-1 N2n-1-1 2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 21常量,指在程序运行中其值不能被改变的量。常量,指在程序运行中其值不能被改变的量。常量常量可分为直接常量和符号常量可分为直接常量和符号常量,其中直接常量包括:其中直接常量包括:整型常量、实型常量、字符型整型常量、实型常量、字符型常量、字符串常量常量、字符串常量。1. 1.整型常量整型常量整型常量有三种表示方法:整型常量有三种表示方法:(1) (1) 十进制整数十进

15、制整数:一串连续的数字表示,最高位:一串连续的数字表示,最高位非零非零。(2) (2) 八进制整数八进制整数:以数字:以数字0 0开头的数是八进制数。开头的数是八进制数。(3) (3) 十六进制整数十六进制整数:以:以0 x0 x开头的,开头的,a-fa-f不区分大小写不区分大小写 。在上述方法表示的整数后面附一个字母在上述方法表示的整数后面附一个字母l l或或L L作后缀,作后缀,即可表示该数据的类型是长整型的即可表示该数据的类型是长整型的。P14 例:32767,010,018,0 x10,0 xf -63L、0123LU、0 x4aL2022-5-31第第2章章 基本数据类型、运算符和表

16、达式基本数据类型、运算符和表达式 222.2.实型常量实型常量带小数的数称为实数或浮点数。带小数的数称为实数或浮点数。实型常量实型常量只能用十进制形式表示只能用十进制形式表示,不能用八进制和,不能用八进制和十六进制形式表示。十六进制形式表示。实型常量有两种表示实型常量有两种表示方法:方法:(1)(1)小数形式小数形式:由数字和小数点组成,如:由数字和小数点组成,如3.14159263.1415926、-0.12-0.12、.4.4、3.3.等都是实数。等都是实数。(2)(2)指数形式指数形式:如:如1.23e51.23e5或或12.3E412.3E4都代表都代表1.23x1051.23x105

17、。注注: :字母字母e e(或(或E E)之前必须有数字,且)之前必须有数字,且e e后面后面指数必须为整数指数必须为整数,如,如e3e3、2.1e3.22.1e3.2、e e等都等都不是合法的指数形式。不是合法的指数形式。 P152022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 233.3.字符常量字符常量字符型常量是由一对字符型常量是由一对单引号单引号括起来的括起来的单个字单个字符符构成,在语言中,字符常量有以下特点:构成,在语言中,字符常量有以下特点:(1) (1) 字符常量只能用字符常量只能用单引号单引号括起来,不能用双括起来,不能用双引号或其它括

18、号。引号或其它括号。(2) (2) 字符常量只能是字符常量只能是单个字符单个字符,不能是字符串。,不能是字符串。(3) (3) 字符可以是字符可以是字符集中任意字符字符集中任意字符。一个字符。一个字符型常量的值是该字符集中对应的型常量的值是该字符集中对应的ASCIIASCII编码值。编码值。显然显然55和和5 5 是不同的。是不同的。P1524p在C语言中,还有一些特殊的控制字符无法直接写出,如换行字符。pC语言为它们规定了特殊写法:以反斜杠开头()的一个字符或一个数字序列,这类字符称为转义字符。即将后面的字符转换为另外的意义,其实是一种控制符号。如换行字符n,退格字符b。P152022-5-

19、31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 25表2-3 转义字符表(P15)字符形式字符形式功功 能能nn换行,将光标从当前位置移到下一行开头换行,将光标从当前位置移到下一行开头t t横向跳格,光标跳到下一个水平制表位横向跳格,光标跳到下一个水平制表位bb退格退格r r回车,将光标从当前位置移到本行开头回车,将光标从当前位置移到本行开头f f换页,将光标从当前位置移到下一页开头换页,将光标从当前位置移到下一页开头 反斜杠字符反斜杠字符“ ” 单引号字符单引号字符“” 双引号字符双引号字符“ ”ddddddASCIIASCII码为码为1 1到到3 3位位8 8进制

20、数所代表的字符进制数所代表的字符xhhxhhASCIIASCII码为码为1 1到到2 2位位1616进制数所代表的字符进制数所代表的字符2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 264.4.字符串常量字符串常量C C语言中没有专门的字符串类型的变量语言中没有专门的字符串类型的变量,但有字符串常但有字符串常量量。字符串常量是用字符串常量是用双引号双引号括起来的字符序列括起来的字符序列, , 系统在系统在字符串常量最后自动加字符串结束符号字符串常量最后自动加字符串结束符号 0 0 。例如:例如: 字符串字符串“A A”的存储形式:的存储形式:字符字符A

21、 A的存储形式:的存储形式: A 0 A内存中实际存放的是内存中实际存放的是这些字符的这些字符的ASCII码码P152022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 27P15注意:双引号仅起定界符的作用,不是字符串中的字符。注意:字符串不能直接包括单引号、双引号和反斜杠,若要使用,使用转义字符。字符串常量和字符常量的区别: 字符常量由单引号括起来,字符串常量为双引号。字符常量占一个字节的内存空间。2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 285.5.符号常量符号常量符号常量就是符号常量就是使用符号代表常量使用

22、符号代表常量。C C语言中允许用标语言中允许用标识符定义一个常量,这种常量定义在识符定义一个常量,这种常量定义在C C语言中被称之语言中被称之为为“宏定义宏定义”,其一般形式为:,其一般形式为: #define #define 标识符标识符 常量常量 其中其中#define#define是一条是一条预处理命令预处理命令,称为宏定义命令。一经定义,在程序中所有出现该标识符的地方均代一经定义,在程序中所有出现该标识符的地方均代之以该常量值。之以该常量值。符号常量虽然用标识符来标识,但符号常量虽然用标识符来标识,但本质上是常量本质上是常量,具有常量值不能改变的性质。,具有常量值不能改变的性质。好处:

23、对于较大的数值,减少输入量。习惯上,符号常量的标识符用大写字母,变量标识习惯上,符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。符用小写字母,以示区别。不是语句,不是语句,不加分号不加分号P162022年5月31日星期二安徽理工大学计算机科学与技术系安徽理工大学计算机科学与技术系29#define PI 3.14#include “stdio.hvoid main( )float r=3.0,s,l; l=2*PI*r; s=PI*r*r; printf(“l=%f,s=%f”,l,s);例例: :求圆求圆周长和面周长和面积积2022-5-31第第2章章 基本数据类型、运算符和表达

24、式基本数据类型、运算符和表达式 302.1 数据类型2.2 变量和常量2.4 数据类型转换2.5 数据的输入输出2.6 系统函数31C语言的运算符非常丰富,运算符的使用方法也非常灵活。一般可分为以下几类:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符、类型转换运算符、分量运算符、下标运算符,以及函数调用运算符等。2.3 2.3 运算符和表达式运算符和表达式2022年5月31日星期二安徽理工大学计算机科学与技术系安徽理工大学计算机科学与技术系32运算符运算符具有具有三个属性三个属性:优先级优先级: :指运算的先后次序,共分指运算的先后

25、次序,共分1515个级别。个级别。( (见见p17p17表表2-4)2-4)结合性结合性: :指相同优先级运算符连续出现时的计算顺指相同优先级运算符连续出现时的计算顺序,即左结合性(自左至右)和右结合性(自右至序,即左结合性(自左至右)和右结合性(自右至左)。除特别声明外,皆指自左向右。左)。除特别声明外,皆指自左向右。目目 数数: : 指运算符要求的操作数的个数,包括单目、指运算符要求的操作数的个数,包括单目、双目和三目,双目和三目,一般目数越少,优先级越高。一般目数越少,优先级越高。表达式表达式:由常量、变量、函数调用和运算符按一定:由常量、变量、函数调用和运算符按一定规律组合在一起构成的

26、式子。规律组合在一起构成的式子。如:如:a+14/(3+2)-sqrt(17)a+14/(3+2)-sqrt(17)2.3 2.3 运算符和表达式运算符和表达式P171级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同的,则按运算符的结合性所规定的结合方向处理。算术运算符的结合性是自左至右,即先左后右。如表达式x-y+z。这种自左至右的结合方向称为“左结合性”。而自右至左的结合方向称为“右结合性”。如x=y=z,由于“=”的右结合性,应先执行y=x,再执行x=(y=z)。2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类

27、型、运算符和表达式 331. 1. 基本的算术运算符(共有基本的算术运算符(共有5 5种)种)+ +, , - -, , * * (乘)(乘), , / / (除)(除), ,% (取模,求余运算)(取模,求余运算)说明:说明:u在除法运算中,当两个操作数都是整数时,商也为在除法运算中,当两个操作数都是整数时,商也为整整数数,小数部分一律舍去。如:,小数部分一律舍去。如:1/2 0 , 1.0 /2 0.5 u注意:注意:如果两个数中有一个为负数,则舍入的方向是如果两个数中有一个为负数,则舍入的方向是不固定的。机器不同结果不同。当两个操作数均为整数不固定的。机器不同结果不同。当两个操作数均为整

28、数时,结果为整数;若有一个是实数,结果为时,结果为整数;若有一个是实数,结果为doubl型。型。u%(求余运算)要求两个操作数都是(求余运算)要求两个操作数都是整型整型,结果为整,结果为整除后余下的整余数。余数的符号与被除数相同,如除后余下的整余数。余数的符号与被除数相同,如7%-1的结果为的结果为1,而,而-7%3为为-1;u其它运算的两个操作数可为整数和实数。其它运算的两个操作数可为整数和实数。P182022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 342.2.自增、自减运算符自增、自减运算符(+(+、- -)- -) +i, -i ( +i, -i

29、(在使用在使用 i i之前之前, ,先使先使i i的值加减的值加减1)1) i+, i- ( i+, i- (在使用在使用 i i之后之后, , 使使i i的值加减的值加减1)1)若若 i i 的值为的值为3 3,则:,则:j=+i; jj=+i; j的值为的值为4, i4, i的值为的值为4 4j=i+; jj=i+; j的值为的值为3, i3, i的值为的值为4 4注意注意: 自增、自减运算符只能用于变量,自增、自减运算符只能用于变量,而不能用于常量和表达式而不能用于常量和表达式。 ( ) 5+、(a+b)+P192022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算

30、符和表达式 35 若若 i i 的值为的值为3 3,则:,则:j=+i; jj=+i; j的值为的值为4, i4, i的值为的值为4 4j=i+; jj=i+; j的值为的值为3, i3, i的值为的值为4 4P19问题:问题:j=-i+,值为多少?,值为多少? j= -+i,值为多少?,值为多少?2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 363.3.赋值运算符赋值运算符“”lC C语言中,赋值被认为是一种运算,由赋值运算语言中,赋值被认为是一种运算,由赋值运算符将一个变量和一个表达式连接起来的式子称为赋符将一个变量和一个表达式连接起来的式子称为赋

31、值表达式。其形式是:值表达式。其形式是: l赋值运算符为赋值运算符为“=”,它的作用是将赋值运算符右,它的作用是将赋值运算符右边表达式或常量的值赋给其左边的变量。边表达式或常量的值赋给其左边的变量。赋值表达赋值表达式的值就是被赋值的变量的值式的值就是被赋值的变量的值。l赋值表达式的值也可以再赋给其它变量。赋值表达式的值也可以再赋给其它变量。P19如:如:a=(b=3+5) ,a的值为的值为8。如果赋值运算。如果赋值运算符两侧的数据类型不同,则在赋值时要进符两侧的数据类型不同,则在赋值时要进行类型转换。行类型转换。赋值表达式,其值为赋值表达式,其值为8例如:例如:a=6这个赋值表达式的值是这个赋

32、值表达式的值是6(变量(变量a的值也是的值也是6)。)。2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 374.4.复合赋值运算符复合赋值运算符lC C语言允许在赋值运算符语言允许在赋值运算符“=”之前加上其他运之前加上其他运算符以构成复合的赋值运算符。例如:算符以构成复合的赋值运算符。例如: a+=5a+=5;等价于等价于a=a+5a=a+5;a a* *=b+5=b+5; 等价于等价于 a=aa=a* *(b+5);(b+5);l凡是双目运算符,都可以和赋值运算符一起组凡是双目运算符,都可以和赋值运算符一起组合成复合的赋值运算符。合成复合的赋值运算符

33、。l在在C C语言中,可以使用的复合赋值运算符有:语言中,可以使用的复合赋值运算符有:+=+=,-=-=,* *=,/=/=,%=%=,=,&=&=,=,|=|=优点:一是简化程序,使程序精练;二是为了一是简化程序,使程序精练;二是为了提高编译效率,产生高质量的目标代码。提高编译效率,产生高质量的目标代码。赋值号左侧只能是变量赋值号左侧只能是变量( (或数组元素或数组元素) ),不能为表达式或常量不能为表达式或常量,如:,如:a+2a+2* *=b (=b () ) a=b+2=c+5 (a=b+2=c+5 () )P192022-5-31第第2章章 基本数据类型、运算符和表达

34、式基本数据类型、运算符和表达式 385.5.关系运算符(比较运算)关系运算符(比较运算)l关系运算符实际上就是比较运算。用于比较两个量的运算符就称为关系运算符。C语言提供了6种关系运算符:种类种类: 、= 、=、=、!=!=优先级优先级: (从高到低)(从高到低)( ( 、 = 、 = ) = ) ( ( = = = 、 != ) != )l关系运算符都是双目运算符,且要求两个操作数都是同一数据类型,其结果为逻辑值。关系运算描述关系运算描述的是一种的是一种“判断关系判断关系”,即关系成立时,其值为真(True),用1表示;关系不成立时,其值为假(False),用0表示。 P202022-5-3

35、1第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 39P20思考:思考:0到到100之间的数能否表示为之间的数能否表示为 0=x3的结果为的结果为1, a B 的结果为的结果为0注:字符串不能用关系比较符比较!注:字符串不能用关系比较符比较!2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 406.6.逻辑运算符逻辑运算符逻辑运算符:用于连接一个或多个条件,判断这逻辑运算符:用于连接一个或多个条件,判断这些条件是否成立。些条件是否成立。 C语言提供语言提供三种逻辑运算符,三种逻辑运算符,分别是:分别是:& “& “与与

36、”运算运算| “| “或或”运算运算! “! “非非”运算运算其中,其中,与运算符与运算符&和或运算符和或运算符|均为双目均为双目运算符,非运算符运算符,非运算符! !为单目运算符为单目运算符。P202022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 41P20逻辑运算的真值表ab!a!ba&ba|b真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假ab!a!ba&ba|b1100111001010110010011002022年5月31日星期二安徽理工大学计算机科学与技术系安徽理工大学计

37、算机科学与技术系42说明:说明:当多个当多个&连续出现时,如连续出现时,如表达式表达式& & 表达式表达式 & & 表达式表达式从左到右,只从左到右,只要一个操作数为要一个操作数为0 0,结果就为,结果就为0 0,不进行后续运算。,不进行后续运算。当多个当多个 | | 连续出现时,如连续出现时,如表达式表达式 | | 表达式表达式 | | 表达式表达式从左到右,从左到右,只要一个操作数为只要一个操作数为1 1,结果就为,结果就为1 1,不进行后续运算。,不进行后续运算。例:例:#include “stdio.hvoid main()int m,n=10;

38、 m=2&n+; printf(“m=%d,n=%d”,m,n);1.分析运行结果分析运行结果2. 改为改为m=0&n+,结果又如何结果又如何?P202022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 437.7.位运算位运算l位运算符是以单独的二进制位为操作对象的位运算符是以单独的二进制位为操作对象的运算。也就是说,运算。也就是说,其操作数是二进制数其操作数是二进制数。lC C语言中提供的位运算符有:按位与(语言中提供的位运算符有:按位与(& &)、)、按位或(按位或(| |)、按位异或()、按位异或()、按位取反)、按位取

39、反()、左移()、左移(),),(P2123P2123)xyx&yx|yxyy0000010101101001111111002022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 447.7.位运算位运算例:56按位取反: 56(00111000)56(00111000)199(11000111)按位与56&157按位或56|157(P2123P2123)2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 457.7.位运算位运算按位异或:56157 左移位 x=00001111, y=x2 则y=00010

40、100(P2123P2123)注意:注意:1 1)左左移会引起数据的变化,左移一位相当于原数移会引起数据的变化,左移一位相当于原数乘乘以以2 2,左移,左移n n位,则乘以位,则乘以2 2n n. .2 2)右右移也会引起数据的变化,右移一位相当于原数移也会引起数据的变化,右移一位相当于原数除除以以2 2,右,右移移n n位,则除以位,则除以2 2n n. .2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 468.8.求字节数运算符求字节数运算符 sizeofsizeof是是C C语言的一种单目操作符,并不是函数。语言的一种单目操作符,并不是函数。 si

41、zeofsizeof操作符以字节形式给出了其操作数的存储操作符以字节形式给出了其操作数的存储大小。大小。sizeofsizeof可以用于数据类型和变量。可以用于数据类型和变量。如:如:sizeof(intsizeof(int) ),sizeof(var_namesizeof(var_name) ),sizeofsizeof var_namevar_name。 P242022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 478.8.求字节数运算符求字节数运算符关于关于sizeofsizeof的结果:的结果:1. 1. 操作数具有类型操作数具有类型charchar

42、、unsignedunsignedcharchar或或signedsignedcharchar,其结果等于,其结果等于1 1。因为。因为ANSIANSIC C正式规定字符正式规定字符类型为类型为1 1字节。字节。 2. 2. intint、unsignedunsignedintint、shortshortintint、unsignedunsignedshortshort、longlongintint、unsignedunsignedlonglong、floatfloat、doubledouble、longlongdoubledouble类型的类型的sizeofsizeof在在ANSIANSIC

43、 C中没有具体规定,大小依赖于实现,一般可能分中没有具体规定,大小依赖于实现,一般可能分别为别为4 4、4 4、2 2、2 2、4 4、4 4、4 4、8 8、1010。3. 3. 当操作数是指针时,当操作数是指针时,sizeofsizeof依赖于操作系统。如依赖于操作系统。如3232位系统和位系统和6464位系统返回的结果不一样。位系统返回的结果不一样。4. 4. 当操作数是数组类型时,返回数组的总字节数。当操作数是数组类型时,返回数组的总字节数。 P242022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 489.9.逗号运算符逗号运算符用逗号运算符可将两

44、个表达式连接起来。用逗号运算符可将两个表达式连接起来。形式:形式: e1,e2,e3,e1,e2,e3,其中其中e1e1、e2e2、e3e3均为表达式,从左向右依次均为表达式,从左向右依次计算各个表达式的值,而将计算各个表达式的值,而将最后最后一个表达式的值一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,的表达式中,将多个表达式连接成一个表达式,如:如: for(ifor(i=0,j=0,j=n;in;i (xy?x:yy?x:y) ); / /* *将和中较大的一个将和中较大的一个数赋值给变量数赋

45、值给变量maxmax* */ /思考题:思考题: 对对n(0)n(0)个人进行分班,每班个人进行分班,每班k(0)k(0)个人,最后个人,最后不足不足k k人也编一班,问要编几个班?(试用条件运算人也编一班,问要编几个班?(试用条件运算符表达)符表达)n%k0?n/k+1:n/kP25n/k+(n%k0? 1:0)2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 50表达式由运算符和操作数构成表达式由运算符和操作数构成。操作数可以。操作数可以是常量和变量。是常量和变量。表达式的类型就是表达式计算结果的类型。表达式的类型就是表达式计算结果的类型。(由最后一个

46、参与运算的运算符决定)(由最后一个参与运算的运算符决定)表达式中不同类型的常量及变量,均应变换为同一类型的量。在表达式求值时,应注意优先级和结合性问题。P252022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 512.1 数据类型2.2 变量和常量2.3 运算符和表达式2.5 数据的输入输出2.6 系统函数2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 52C C语言允许不同数据类型相互转换。语言允许不同数据类型相互转换。类型转换有三种方式:类型转换有三种方式:自动类型转换、自动类型转换、赋值类型转换和强制类型转换赋值

47、类型转换和强制类型转换。P262022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 53 高高 double float long unsigned 低低 int char,short 自动转换:自动转换: 在不同类型数据进行混合运算时,系统在不同类型数据进行混合运算时,系统自动进行的类型转换。自动进行的类型转换。P262022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 54赋值运算时,如果赋值运算符两侧的类型(指赋值运算时,如果赋值运算符两侧的类型(指基本类型)不一致,基本类型)不一致,系统自动将表达式的值转换系统自动将表

48、达式的值转换成变量的类型存到变量的存储单元成变量的类型存到变量的存储单元,如:,如:(1) (1) 当整型数据赋给浮点型变量时,数值上不发当整型数据赋给浮点型变量时,数值上不发生任何变化,但有效位增加。如:生任何变化,但有效位增加。如:float f;float f;f=16; /f=16; /* * 内存中变量内存中变量f f的值为的值为16.000000 16.000000 * */ /(2) (2) 当单、双精度浮点型数据赋给整型变量时,当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃。如:浮点数的小数部分将被舍弃。如:intint a; a;a=8.38; /a=8.38

49、; /* * 内存中变量内存中变量a a的值为的值为8 8 * */ /P272022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 55P28#includevoid main()unsigned char a;char b;unsigned int x;int y;b=0 xfe;x=b;y=b;printf(%d,%dn%x,%x,x,y,x,y);printf(%u,%un,x,y);第一行,输出带符号十进制整数第一行,输出带符号十进制整数输出十六进无符号整数输出十六进无符号整数2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算

50、符和表达式 56可以利用强制类型转换运算符将一个表达式运算可以利用强制类型转换运算符将一个表达式运算结果强制转换成所需类型。强制类型转换的一般形结果强制转换成所需类型。强制类型转换的一般形式为:式为: ( (类型名类型名)( )(表达式表达式) )【注意注意】(1) (1) 表达式应该用括号括起来。例如:表达式应该用括号括起来。例如:( (int)(a+bint)(a+b) );( (int)a+bint)a+b; ; (2) (2) 经强制类型转换后,得到的是一个所需类型经强制类型转换后,得到的是一个所需类型的中间变量,的中间变量,原来变量的类型并没有发生任何变化原来变量的类型并没有发生任何

51、变化。P292022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 57强制类型转换主要的用途是: 1)满足一些运算对类型的特殊要求。如求余运算符“%”,要求运算符两侧的数据为整型,(int)2.5%3 2)防止丢失整数除法中的小数部分, 如 int x=3,y=2; float f; f=(float)x/y;P29是将是将x x的值取出变的值取出变成浮点数,参与运成浮点数,参与运算,算,x x中的值仍为中的值仍为3.3.2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 582.1 数据类型2.2 变量和常量2.3 运算符

52、和表达式2.4 数据类型转换2.6 系统函数2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 59lC语言的输入和输出功能由语言的输入和输出功能由标准输入输出标准输入输出库函数库函数来实现来实现 。lstdio.hstdio.h是标准的输入输出函数库头文件,是标准的输入输出函数库头文件,包括包括putcharputchar(输出字符),(输出字符),getchargetchar(输入(输入字符),字符),printfprintf(格式输出),(格式输出),scanfscanf(格式(格式输入),输入),putsputs(输出字符串),(输出字符串),get

53、sgets(输入(输入字符串)字符串)等函数。等函数。l使用使用“#include”预编译命令将有关的预编译命令将有关的“头文件头文件”包含到用户源程序中包含到用户源程序中P302022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 601.printf1.printf函数调用形式函数调用形式功能:通过标准输出设备输出一组数据功能:通过标准输出设备输出一组数据格式格式: : printfprintf(格式控制字符串,输出列表);(格式控制字符串,输出列表);这这里的里的“格式控制字符串格式控制字符串”和和“输出列表输出列表”实际上都实际上都是函数的参数。其中:是

54、函数的参数。其中:(1) (1) 格式控制字符串是用双引号括起来的字符串,它包格式控制字符串是用双引号括起来的字符串,它包括两个信息:括两个信息:格式说明部分格式说明部分。由。由“%”开头和格式字符结尾,如开头和格式字符结尾,如%d%d,%c%c,%f%f等。它的作用是将要输出的数据转化成指定的等。它的作用是将要输出的数据转化成指定的格式输出,格式说明都是由格式输出,格式说明都是由“%”字符开始的。字符开始的。一般字符(非格式字符)一般字符(非格式字符)。即按原样输出的字符,在。即按原样输出的字符,在显示时起提示作用。它由普通字符和转义字符构成。如:显示时起提示作用。它由普通字符和转义字符构成

55、。如:printf(naprintf(na=%=%dn,adn,a); /); /* * 双引号内换行符、字符双引号内换行符、字符a=a=都都是原样输出字符是原样输出字符* */ /P302022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 61(2) (2) 输出列表是需要输出的一些数据,如变量、输出列表是需要输出的一些数据,如变量、函数、表达式。函数、表达式。输出列表的个数与格式说明符输出列表的个数与格式说明符的个数一般应保持一致的个数一般应保持一致。如:。如:P302022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 6

56、22.2.格式说明格式说明格式说明符由格式说明符由“%”开头,以一个英文字母结开头,以一个英文字母结束,它表明输出数据的类型;其间还可以有一些束,它表明输出数据的类型;其间还可以有一些格式控制字符,用以说明数据输出的长度、位数、格式控制字符,用以说明数据输出的长度、位数、对齐方式等。对齐方式等。 %-+0#%-+0#输出数据最小宽度输出数据最小宽度m.m.精度精度nn数据长度数据长度 类型类型其中:其中: :表示可选项。:表示可选项。格式控制字符格式控制字符- -、+ +、0 0、# #的具体含义如表的具体含义如表2-52-5所所示。示。P312022-5-31第第2章章 基本数据类型、运算符

57、和表达式基本数据类型、运算符和表达式 63P31 +:输出时输出数值的符号,且数值右对齐,左边补空格。缺省时表示:正数,前面是空格;负数在数值前面输出负号“-”。 -:输出时,数值左对齐,右边补空格。 0:输出时,在数值前面多余的空格用0来代替。 #:对格式字符O(八进制)数字前加0,对格式字符x(十六进制)数字前加0 x。 输出数据最小宽度m:m是十进制整数,它表示用十进制输出的最小位数。当需要输出的数据长度超过该数时,其不起作用,数据按实际位数输出;当需要输出数据长度小于该数时,左边被空格或0。2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 64P3

58、1 .精度n:如果输出的是数值,则该数表示小数位位数;若实际位数大于所定义的精度,则截去超过部分;如输出的是字串,则表示输出字符的个数。 数据长度:是字符,它有两种形式:h, l。H表示按短整型量输出,l表示按长整型量输出。 类型:是格式说明符中必不可少的,它表示输出列表里要输出的数据类型。见下表。2022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 65表表2-8 2-8 printfprintf函数常用类型格式符表函数常用类型格式符表格式字符形格式字符形式式格式字符含义格式字符含义 d( d(或或i) i)表示以十进制形式输出一个带符号的整数表示以十进制形

59、式输出一个带符号的整数(默认正数不输出符号)(默认正数不输出符号) f f表示以小数形式输出带符号的实数(包括表示以小数形式输出带符号的实数(包括单、双精度),默认输出单、双精度),默认输出6 6位小数位小数 c c表示输出一个单字符表示输出一个单字符 s s表示输出一个字符串表示输出一个字符串 % %表示输入百分号本身表示输入百分号本身P312022-5-31第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 66注:输出是从右向左计算输出项后,按格式说注:输出是从右向左计算输出项后,按格式说明的顺序对应输出。一般格式说明和输出项的明的顺序对应输出。一般格式说明和输出项的个

60、数和类型应相同,如不匹配系统并不报错,个数和类型应相同,如不匹配系统并不报错,系统将按以下操作。系统将按以下操作。a a、格式说明的个数少于输出项的个数,多余的、格式说明的个数少于输出项的个数,多余的输出项将不输出;格式说明的个数多于输出项输出项将不输出;格式说明的个数多于输出项的个数,多余的格式说明将输出随机的值。的个数,多余的格式说明将输出随机的值。b b、整型数据按、整型数据按%f %f 输出,出现运行错误;实型输出,出现运行错误;实型数据按数据按%d %d 输出,运行错结果为输出,运行错结果为0 0; P3467 printf(Hello World! n); printf(fahr = %d, celsius = %dn, fahr, celsius); 格式控制字符串:格式控制字符串: 普通字符:原样输出普通字符:原样输出 格式控制说明格式控制说明:按指定的格式输出数据按指定的格式输出数据,% 与数据类型有关与数据类型有关 int型型 :%d float d

温馨提示

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

评论

0/150

提交评论