版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 1 C C语言程序设计语言程序设计 第第2 2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 2 【学习目标学习目标】 掌握掌握C C语言的基本数据类型语言的基本数据类型 掌握常量的使用掌握常量的使用 掌握掌握变量变量的定义与使用的定义与使用 掌握掌握运算符运算符的应用的应用 掌握掌握C C语言提供的常用库函数语言提供的常用库函数 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和
2、表达式 3 2.2 2.2 变量和常量变量和常量 2.3 2.3 运算符和表达式运算符和表达式 第第2 2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 2.4 2.4 数据类型转换数据类型转换 2.5 2.5 数据的输入输出数据的输入输出 2.6 2.6 系统系统函数函数 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 4 为了更好地对数据进行存储和处理,为了更好地对数据进行存储和处理, 语言中的数据类型可分为:语言中的数据类型可分为:基本数据类型,基本数据类型, 构造数据类型,指针类型,空类型构造数据类型,指针类型,空类型四大类四大类
3、程序中要对各种各样的数据进行描述和程序中要对各种各样的数据进行描述和 操作,用到的数据都必须指明其类型。数据操作,用到的数据都必须指明其类型。数据 类型的作用:类型的作用: 指出了应为数据分配的存储空间的大小指出了应为数据分配的存储空间的大小 规定了数据所能进行的操作规定了数据所能进行的操作 P10 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 5 整型(整型(int) 数据类型数据类型 基本类型基本类型 整型整型 单精度型(单精度型(float) 字符型(字符型(char) 长整型(长整型(long) 短整型(短整型(short) 实型实型 双精度型双
4、精度型(double) 枚举类型(枚举类型(enum) 共用体类型(共用体类型(union) 构造类型构造类型 结构体类型(结构体类型(struct) 数组类型数组类型 空类型(空类型(void) 指针类型(指针类型(*) 教材教材P10 6 2.1.1 2.1.1 整型整型 整型常量即整常数。 C语言定义了6种整型, 分别是: 基本(标准)整型 int 短整型 short或short int 长整型 long或long int 无符号基本整型 unsigned int 无符号短整型 unsigned short 无符号长整型 unsigned long 7 类型匹配规则:一个整型常量,可类型
5、匹配规则:一个整型常量,可 以赋给能容纳下其值的整型变量以赋给能容纳下其值的整型变量 8 2.1.2 2.1.2 实型实型 实型数据又称浮点型数据。共有三种表示实数 的类型: float,单精度浮点数类型。 double,双精度浮点数类型。 long double,长双精度类型。 9 2.1.3 2.1.3 字符型字符型 字符型的数据即通常的字符。字符类型的 数据包括计算机所用编码字符集中的所有 字符。 常用的ASCII字符集包括所有大小写英文 字母、数字、各种标点符号字符,还有一 些控制符,一共128个。 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式
6、10 2.1 数据类型 2.3 运算符和表达式 2.4 数据类型转换 2.5 数据的输入输出 2.6 系统函数 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 11 u对于基本数据类型量,按其取值是否可改变又分对于基本数据类型量,按其取值是否可改变又分 为为常量和变量常量和变量两种。两种。 在程序执行过程中,其值不发生改变的量称为常量,在程序执行过程中,其值不发生改变的量称为常量, 其值可变的量称为变量。其值可变的量称为变量。 u与数据类型结合起来分类,分为整型常量、整型与数据类型结合起来分类,分为整型常量、整型 变量、浮点常量、浮点变量、字符常量、字符变
7、量、变量、浮点常量、浮点变量、字符常量、字符变量、 枚举常量、枚举变量。枚举常量、枚举变量。 在程序中,常量是可以不经说明而直接引用的,而在程序中,常量是可以不经说明而直接引用的,而 变量则必须先定义后使用变量则必须先定义后使用。 P12 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 12 P12 2.2.1 变量 p变量是指在程序运行过程中其值可以被改变 的量。一个变量有三个相关的要素: 变量名 变量的数据类型 变量的值 程序中一个变量只能属于一个类型, 即一旦定义了不能再更改。 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运
8、算符和表达式 13 l变量名代表该变量的存储单元及其存放的变量名代表该变量的存储单元及其存放的 值,系统为不同类型的变量在内存中开辟值,系统为不同类型的变量在内存中开辟 不同的存储单元,以便存放相应类型的值;不同的存储单元,以便存放相应类型的值; 不同类型的变量存放数据的方法也不相同。不同类型的变量存放数据的方法也不相同。 系统还根据变量的类型检查该变量所进系统还根据变量的类型检查该变量所进 行的运算是否合法,例如只有整型变量和行的运算是否合法,例如只有整型变量和 整数才能参与求余(整数才能参与求余(%)运算)运算。 P12 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型
9、、运算符和表达式 14 1. 1.变量的定义和赋值变量的定义和赋值 pC语言中变量必须“先定义,后使用”。可以 在变量的声明语句中同时定义变量的初始化,即 赋初值。声明变量语句的形式为: 类型类型 变量名变量名=初值初值,变量名,变量名=初值初值 注:若未赋初值,一般默认初值为随机数。注:若未赋初值,一般默认初值为随机数。 p注意:注意:数学中的数学中的“=”符号不同于符号不同于C语言中的赋语言中的赋 值符号值符号“=”,在,在C语言的语言的a=a+1是成立的,表示是成立的,表示 “a加上加上1的值赋给变量的值赋给变量a”。在。在C语言中判断两个语言中判断两个 数是否相等时使用符号数是否相等时
10、使用符号“=”。 教材教材P13 变量应先定义,后赋值,再参与运算。变量应先定义,后赋值,再参与运算。 15 pC语言变量命名规则: C语言中,变量只能由字母、数字和下划线组 成,且第一个字符必须为字母或下划线。具体 命名规则如下: 1)只能由下划线、数字0-9与a-z,A-Z构成。 2)变量名首字符必须是字母或下划线。 3)C语言中大小写字母是敏感的,代表不同 的意义。如:Str和str是两个不同的变量。Int? 4)变量名不能为系统关键字。 p习惯上,变量名用小写字母表示,名字要“见名 知义”。 16 l例如 int a; float f; int x,y,min; int m,n=3,w
11、=5; l以下为非法定义: int a=b=c=5; 正确的形式是: int a=5,b=5,c=5; 或 int a,b,c; a=b=c=5; 类型类型 变量名变量名=初值初值,变量名,变量名=初值初值 问题:问题: float score.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; pri
12、ntf(a1=%d,a2=%d,a3=%d,a4=%d,a5=%d,a6=%dn,a1,a2,a 3,a4,a5,a6); printf(f=%f,x=%dn,f,x); / /* * 赋值示例赋值示例* */ / #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; 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
13、,a6); printf(f=%f,x=%dn,f,x); 18 2. 变量中数据的存储 p对于无符号整数,其存储较简单,存储单元的0或 1均表示数。 p如何表示有符号整数? 原码:原码:二进制数的最高位为符号位,如果符号位二进制数的最高位为符号位,如果符号位 为为0,则为正数;如果符号位为,则为正数;如果符号位为1,则为负数。,则为负数。 反码:反码:正数的反码和原码相同,负数的反码为除正数的反码和原码相同,负数的反码为除 符号位以外的稳中有各位取反。符号位以外的稳中有各位取反。 补码:补码:正数的补码和原码相同,而负数的补码为正数的补码和原码相同,而负数的补码为 其反码加其反码加1. 19
14、 机器字长为机器字长为8位二进制数:位二进制数: 例:例: +97 -97 +97-97 原码原码01100001B11100001B 反码反码01100001B10011110B 补码补码01100001B10011111B 计算机中的负数用补码表示。 20 已知补码求真值: 当机器数的最高位(符号位)为0时,真值为 正,值等于其余n-1位的值; 当机器数的最高位(符号位)为1时,真值为 负,值等于其余n-1位按位取反,末尾+1的 值。 补码表示的整数范围是: -2n-1 N2n-1-1 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 21 常量,指在程
15、序运行中其值不能被改变的量。常量,指在程序运行中其值不能被改变的量。常量常量 可分为直接常量和符号常量可分为直接常量和符号常量, 其中直接常量包括:其中直接常量包括:整型常量、实型常量、字符型整型常量、实型常量、字符型 常量、字符串常量常量、字符串常量。 1. 1.整型常量整型常量 整型常量有三种表示方法:整型常量有三种表示方法: (1) (1) 十进制整数十进制整数:一串连续的数字表示,最高位:一串连续的数字表示,最高位非零非零。 (2) (2) 八进制整数八进制整数:以数字:以数字0 0开头的数是八进制数。开头的数是八进制数。 (3) (3) 十六进制整数十六进制整数:以:以0 x0 x开
16、头的,开头的,a-fa-f不区分大小写不区分大小写 。 在上述方法表示的整数后面附一个字母在上述方法表示的整数后面附一个字母l l或或L L作后缀,作后缀, 即可表示该数据的类型是长整型的即可表示该数据的类型是长整型的。 P14 例:32767,010,018,0 x10,0 xf -63L、0123LU、0 x4aL 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 22 2.2.实型常量实型常量 带小数的数称为实数或浮点数。带小数的数称为实数或浮点数。实型常量实型常量 只能用十进制形式表示只能用十进制形式表示,不能用八进制和,不能用八进制和 十六进制形式
17、表示。十六进制形式表示。实型常量有两种表示实型常量有两种表示 方法:方法: (1)(1)小数形式小数形式:由数字和小数点组成,如:由数字和小数点组成,如 3.14159263.1415926、-0.12-0.12、.4.4、3.3.等都是实数。等都是实数。 (2)(2)指数形式指数形式:如:如1.23e51.23e5或或12.3E412.3E4都代表都代表 1.23x1051.23x105。 注注: :字母字母e e(或(或E E)之前必须有数字,且)之前必须有数字,且e e后面后面 指数必须为整数指数必须为整数,如,如e3e3、2.1e3.22.1e3.2、e e等都等都 不是合法的指数形式
18、。不是合法的指数形式。 P15 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 23 3.3.字符常量字符常量 字符型常量是由一对字符型常量是由一对单引号单引号括起来的括起来的单个字单个字 符符构成,在语言中,字符常量有以下特点:构成,在语言中,字符常量有以下特点: (1) (1) 字符常量只能用字符常量只能用单引号单引号括起来,不能用双括起来,不能用双 引号或其它括号。引号或其它括号。 (2) (2) 字符常量只能是字符常量只能是单个字符单个字符,不能是字符串。,不能是字符串。 (3) (3) 字符可以是字符可以是字符集中任意字符字符集中任意字符。一个字
19、符。一个字符 型常量的值是该字符集中对应的型常量的值是该字符集中对应的ASCIIASCII编码值。编码值。 显然显然55和和5 5 是不同的。是不同的。 P15 24 p在C语言中,还有一些特殊的控制字 符无法直接写出,如换行字符。 pC语言为它们规定了特殊写法:以反 斜杠开头()的一个字符或一个数字 序列,这类字符称为转义字符。即将 后面的字符转换为另外的意义,其实 是一种控制符号。如换行字符n,退 格字符b。 P15 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 25 表2-3 转义字符表(P15) 字符形式字符形式功功 能能 nn换行,将光标从当前
20、位置移到下一行开头换行,将光标从当前位置移到下一行开头 t t横向跳格,光标跳到下一个水平制表位横向跳格,光标跳到下一个水平制表位 bb退格退格 r r回车,将光标从当前位置移到本行开头回车,将光标从当前位置移到本行开头 f f换页,将光标从当前位置移到下一页开头换页,将光标从当前位置移到下一页开头 反斜杠字符反斜杠字符“ ” 单引号字符单引号字符“” 双引号字符双引号字符“ ” ddddddASCIIASCII码为码为1 1到到3 3位位8 8进制数所代表的字符进制数所代表的字符 xhhxhhASCIIASCII码为码为1 1到到2 2位位1616进制数所代表的字符进制数所代表的字符 202
21、1-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 26 4.4.字符串常量字符串常量 C C语言中没有专门的字符串类型的变量语言中没有专门的字符串类型的变量,但有字符串但有字符串 常量常量。字符串常量是用字符串常量是用双引号双引号括起来的字符序列括起来的字符序列, , 系统系统 在字符串常量最后自动加字符串结束符号在字符串常量最后自动加字符串结束符号 0 0 。 例如:例如: 字符串字符串“A A”的存储形式:的存储形式: 字符字符A A的存储形式:的存储形式: A 0 A 内存中实际存放的是内存中实际存放的是 这些字符的这些字符的ASCII码码 P15 2021
22、-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 27 P15 注意:双引号仅起定界符的作用,不是字符串 中的字符。 注意:字符串不能直接包括单引号、双引号和 反斜杠,若要使用,使用转义字符。 字符串常量和字符常量的区别: 字符常量由单引号括起来,字符串常量为双 引号。 字符常量占一个字节的内存空间。 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 28 5.5.符号常量符号常量 符号常量就是符号常量就是使用符号代表常量使用符号代表常量。C C语言中允许用标语言中允许用标 识符定义一个常量,这种常量定义在识符定义一个常量,这种常
23、量定义在C C语言中被称之语言中被称之 为为“宏定义宏定义”,其一般形式为:,其一般形式为: #define #define 标识符标识符 常量常量 其中其中#define#define是一条是一条预处理命令预处理命令,称为宏定义命令。 一经定义,在程序中所有出现该标识符的地方均代一经定义,在程序中所有出现该标识符的地方均代 之以该常量值。之以该常量值。符号常量虽然用标识符来标识,但符号常量虽然用标识符来标识,但 本质上是常量本质上是常量,具有常量值不能改变的性质。,具有常量值不能改变的性质。 好处:对于较大的数值,减少输入量。 习惯上,符号常量的标识符用大写字母,变量标识习惯上,符号常量的标
24、识符用大写字母,变量标识 符用小写字母,以示区别。符用小写字母,以示区别。 不是语句,不是语句, 不加分号不加分号 P16 2021年7月9日星期五安徽理工大学计算机科学与技术系安徽理工大学计算机科学与技术系 29 #define PI 3.14 #include “stdio.h void main( ) float r=3.0,s,l; l=2*PI*r; s=PI*r*r; printf(“l=%f,s=%f”,l,s); 例例: :求圆求圆 周长和面周长和面 积积 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 30 2.1 数据类型 2.2 变量
25、和常量 2.4 数据类型转换 2.5 数据的输入输出 2.6 系统函数 31 C语言的运算符非常丰富,运算符的使用方法 也非常灵活。一般可分为以下几类:算术运 算符、关系运算符、逻辑运算符、位运算符、 赋值运算符、条件运算符、逗号运算符、指 针运算符、求字节数运算符、类型转换运算 符、分量运算符、下标运算符,以及函数调 用运算符等。 2.3 2.3 运算符和表达式运算符和表达式 2021年7月9日星期五安徽理工大学计算机科学与技术系安徽理工大学计算机科学与技术系 32 运算符运算符具有具有三个属性三个属性: 优先级优先级: :指运算的先后次序,共分指运算的先后次序,共分1515个级别。个级别。
26、( (见见 p17p17表表2-4)2-4) 结合性结合性: :指相同优先级运算符连续出现时的计算顺指相同优先级运算符连续出现时的计算顺 序,即左结合性(自左至右)和右结合性(自右至序,即左结合性(自左至右)和右结合性(自右至 左)。除特别声明外,皆指自左向右。左)。除特别声明外,皆指自左向右。 目目 数数: : 指运算符要求的操作数的个数,包括单目、指运算符要求的操作数的个数,包括单目、 双目和三目,双目和三目,一般目数越少,优先级越高。一般目数越少,优先级越高。 表达式表达式:由常量、变量、函数调用和运算符按一定:由常量、变量、函数调用和运算符按一定 规律组合在一起构成的式子。规律组合在一
27、起构成的式子。 如:如:a+14/(3+2)-sqrt(17)a+14/(3+2)-sqrt(17) 2.3 2.3 运算符和表达式运算符和表达式 P17 1级最高,15级最低。在表达式中,优先级 较高的先于优先级较低的进行运算。而在一个 运算量两侧的运算符优先级相同的,则按运算 符的结合性所规定的结合方向处理。 算术运算符的结合性是自左至右,即先左后右。 如表达式x-y+z。这种自左至右的结合方向称为 “左结合性”。而自右至左的结合方向称为 “右结合性”。如x=y=z,由于“=”的右结合性, 应先执行y=x,再执行x=(y=z)。 2021-7-9第第2章章 基本数据类型、运算符和表达式基本
28、数据类型、运算符和表达式 33 1. 1. 基本的算术运算符(共有基本的算术运算符(共有5 5种)种) + +, , - -, , * * (乘)(乘), , / / (除)(除), ,% (取模,求余运算)(取模,求余运算) 说明:说明: u在除法运算中,当两个操作数都是整数时,商也为在除法运算中,当两个操作数都是整数时,商也为整整 数数,小数部分一律舍去。如:,小数部分一律舍去。如:1/2 0 , 1.0 /2 0.5 u注意:注意:如果两个数中有一个为负数,则舍入的方向是如果两个数中有一个为负数,则舍入的方向是 不固定的。机器不同结果不同。当两个操作数均为整数不固定的。机器不同结果不同。
29、当两个操作数均为整数 时,结果为整数;若有一个是实数,结果为时,结果为整数;若有一个是实数,结果为doubl型。型。 u%(求余运算)要求两个操作数都是(求余运算)要求两个操作数都是整型整型,结果为整,结果为整 除后余下的整余数。余数的符号与被除数相同,如除后余下的整余数。余数的符号与被除数相同,如7%-1 的结果为的结果为1,而,而-7%3为为-1; u其它运算的两个操作数可为整数和实数。其它运算的两个操作数可为整数和实数。 P18 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 34 2.2.自增、自减运算符自增、自减运算符(+(+、- -)- -)
30、+i, -i ( +i, -i (在使用在使用 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 4 j=i+; jj=i+; j的值为的值为3, i3, i的值为的值为4 4 注意注意: 自增、自减运算符只能用于变量,自增、自减运算符只能用于变量, 而不能用于常量和表达式而不能用于常量和表达式。 ( ) 5+、(a+b)+ P19 2021-7-9第第2章章 基
31、本数据类型、运算符和表达式基本数据类型、运算符和表达式 35 若若 i i 的值为的值为3 3,则:,则: j=+i; jj=+i; j的值为的值为4, i4, i的值为的值为4 4 j=i+; jj=i+; j的值为的值为3, i3, i的值为的值为4 4 P19 问题:问题:j=-i+,值为多少?,值为多少? j= -+i,值为多少?,值为多少? 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 36 3.3.赋值运算符赋值运算符“” lC C语言中,赋值被认为是一种运算,由赋值运算语言中,赋值被认为是一种运算,由赋值运算 符将一个变量和一个表达式连接起
32、来的式子称为赋符将一个变量和一个表达式连接起来的式子称为赋 值表达式。其形式是:值表达式。其形式是: l赋值运算符为赋值运算符为“=”,它的作用是将赋值运算符右,它的作用是将赋值运算符右 边表达式或常量的值赋给其左边的变量。边表达式或常量的值赋给其左边的变量。赋值表达赋值表达 式的值就是被赋值的变量的值式的值就是被赋值的变量的值。 l赋值表达式的值也可以再赋给其它变量。赋值表达式的值也可以再赋给其它变量。 P19 如:如:a=(b=3+5) ,a的值为的值为8。如果赋值运算。如果赋值运算 符两侧的数据类型不同,则在赋值时要进符两侧的数据类型不同,则在赋值时要进 行类型转换。行类型转换。 赋值表
33、达式,其值为赋值表达式,其值为8 例如:例如:a=6这个赋值表达式的值是这个赋值表达式的值是6 (变量(变量a的值也是的值也是6)。)。 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 37 4.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凡是双目运算符,都可以和赋值运算
34、符一起组凡是双目运算符,都可以和赋值运算符一起组 合成复合的赋值运算符。合成复合的赋值运算符。 l在在C C语言中,可以使用的复合赋值运算符有:语言中,可以使用的复合赋值运算符有: +=+=,-=-=,* *=,/=/=,%=%=,=, m=2 printf(“m=%d,n=%d”,m,n); 1.分析运行结果分析运行结果 2. 改为改为m=0ij;i+,j-)for(i=0,j=n;iy?x:y)(xy?x:y); / /* *将和中较大的一个将和中较大的一个 数赋值给变量数赋值给变量maxmax* */ / 思考题:思考题: 对对n(0)n(0)个人进行分班,每班个人进行分班,每班k(0)
35、k(0)个人,最后个人,最后 不足不足k k人也编一班,问要编几个班?(试用条件运算人也编一班,问要编几个班?(试用条件运算 符表达)符表达) n%k0?n/k+1:n/k P25 n/k+(n%k0? 1:0) 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 50 表达式由运算符和操作数构成表达式由运算符和操作数构成。操作数可以。操作数可以 是常量和变量。是常量和变量。 表达式的类型就是表达式计算结果的类型。表达式的类型就是表达式计算结果的类型。 (由最后一个参与运算的运算符决定)(由最后一个参与运算的运算符决定) 表达式中不同类型的常量及变量,均应变换
36、 为同一类型的量。 在表达式求值时,应注意优先级和结合性问 题。 P25 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 51 2.1 数据类型 2.2 变量和常量 2.3 运算符和表达式 2.5 数据的输入输出 2.6 系统函数 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 52 C C语言允许不同数据类型相互转换。语言允许不同数据类型相互转换。 类型转换有三种方式:类型转换有三种方式:自动类型转换、自动类型转换、 赋值类型转换和强制类型转换赋值类型转换和强制类型转换。 P26 2021-7-9第第2章章 基本数据
37、类型、运算符和表达式基本数据类型、运算符和表达式 53 高高 double float long unsigned 低低 int char,short 自动转换:自动转换: 在不同类型数据进行混合运算时,系统在不同类型数据进行混合运算时,系统 自动进行的类型转换。自动进行的类型转换。 P26 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 54 赋值运算时,如果赋值运算符两侧的类型(指赋值运算时,如果赋值运算符两侧的类型(指 基本类型)不一致,基本类型)不一致,系统自动将表达式的值转换系统自动将表达式的值转换 成变量的类型存到变量的存储单元成变量的类型存到
38、变量的存储单元,如:,如: (1) (1) 当整型数据赋给浮点型变量时,数值上不当整型数据赋给浮点型变量时,数值上不 发生任何变化,但有效位增加。如:发生任何变化,但有效位增加。如: float f;float f; f=16; /f=16; /* * 内存中变量内存中变量f f的值为的值为16.000000 16.000000 * */ / (2) (2) 当单、双精度浮点型数据赋给整型变量时,当单、双精度浮点型数据赋给整型变量时, 浮点数的小数部分将被舍弃。如:浮点数的小数部分将被舍弃。如: int a;int a; a=8.38; /a=8.38; /* * 内存中变量内存中变量a a的
39、值为的值为8 8 * */ / P27 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 55 P28 #include void 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); 第一行,输出带符号十进制整数第一行,输出带符号十进制整数 输出十六进无符号整数输出十六进无符号整数 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 56
40、 可以利用强制类型转换运算符将一个表达式运算可以利用强制类型转换运算符将一个表达式运算 结果强制转换成所需类型。强制类型转换的一般形结果强制转换成所需类型。强制类型转换的一般形 式为:式为: ( (类型名类型名)( )(表达式表达式) ) 【注意注意】 (1) (1) 表达式应该用括号括起来。例如:表达式应该用括号括起来。例如: (int)(a+b)(int)(a+b); (int)a+b; (int)a+b; (2) (2) 经强制类型转换后,得到的是一个所需类型经强制类型转换后,得到的是一个所需类型 的中间变量,的中间变量,原来变量的类型并没有发生任何变化原来变量的类型并没有发生任何变化。
41、 P29 2021-7-9第第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. 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 58 2.1 数据类型 2.2 变量和常量
42、 2.3 运算符和表达式 2.4 数据类型转换 2.6 系统函数 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 59 lC语言的输入和输出功能由语言的输入和输出功能由标准输入输出标准输入输出 库函数库函数来实现来实现 。 lstdio.hstdio.h是标准的输入输出函数库头文件,是标准的输入输出函数库头文件, 包括包括putcharputchar(输出字符),(输出字符),getchargetchar(输入(输入 字符),字符),printfprintf(格式输出),(格式输出),scanfscanf(格式(格式 输入),输入),putsputs(输出
43、字符串),(输出字符串),getsgets(输入(输入 字符串)字符串)等函数。等函数。 l使用使用“#include”预编译命令将有关的预编译命令将有关的 “头文件头文件”包含到用户源程序中包含到用户源程序中 P30 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 60 1.printf1.printf函数调用形式函数调用形式 功能:通过标准输出设备输出一组数据功能:通过标准输出设备输出一组数据 格式格式: : printfprintf(格式控制字符串,输出列表);(格式控制字符串,输出列表);这这 里的里的“格式控制字符串格式控制字符串”和和“输出列表
44、输出列表”实际上都实际上都 是函数的参数。其中:是函数的参数。其中: (1) (1) 格式控制字符串是用双引号括起来的字符串,它包格式控制字符串是用双引号括起来的字符串,它包 括两个信息:括两个信息: 格式说明部分格式说明部分。由。由“%”开头和格式字符结尾,如开头和格式字符结尾,如%d%d, %c%c,%f%f等。它的作用是将要输出的数据转化成指定的等。它的作用是将要输出的数据转化成指定的 格式输出,格式说明都是由格式输出,格式说明都是由“%”字符开始的。字符开始的。 一般字符(非格式字符)一般字符(非格式字符)。即按原样输出的字符,在。即按原样输出的字符,在 显示时起提示作用。它由普通字符
45、和转义字符构成。如:显示时起提示作用。它由普通字符和转义字符构成。如: printf(na=%dn,a); /printf(na=%dn,a); /* * 双引号内换行符、字符双引号内换行符、字符a=a=都都 是原样输出字符是原样输出字符* */ / P30 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 61 (2) (2) 输出列表是需要输出的一些数据,如变量、输出列表是需要输出的一些数据,如变量、 函数、表达式。函数、表达式。输出列表的个数与格式说明符输出列表的个数与格式说明符 的个数一般应保持一致的个数一般应保持一致。如:。如: P30 2021-
46、7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 62 2.2.格式说明格式说明 格式说明符由格式说明符由“%”开头,以一个英文字母结开头,以一个英文字母结 束,它表明输出数据的类型;其间还可以有一些束,它表明输出数据的类型;其间还可以有一些 格式控制字符,用以说明数据输出的长度、位数、格式控制字符,用以说明数据输出的长度、位数、 对齐方式等。对齐方式等。 %-+0#%-+0#输出数据最小宽度输出数据最小宽度m.m.精度精度 nn数据长度数据长度 类型类型 其中:其中: :表示可选项。:表示可选项。 格式控制字符格式控制字符- -、+ +、0 0、# #的具体含义如表
47、的具体含义如表2-52-5 所示。所示。 P31 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 63 P31 +:输出时输出数值的符号,且数值右对齐, 左边补空格。缺省时表示:正数,前面是空格; 负数在数值前面输出负号“-”。 -:输出时,数值左对齐,右边补空格。 0:输出时,在数值前面多余的空格用0来代替。 #:对格式字符O(八进制)数字前加0,对格 式字符x(十六进制)数字前加0 x。 输出数据最小宽度m:m是十进制整数,它 表示用十进制输出的最小位数。当需要输出的 数据长度超过该数时,其不起作用,数据按实 际位数输出;当需要输出数据长度小于该数时,
48、 左边被空格或0。 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 64 P31 .精度n:如果输出的是数值,则该数表示小 数位位数;若实际位数大于所定义的精度, 则截去超过部分;如输出的是字串,则表示 输出字符的个数。 数据长度:是字符,它有两种形式:h, l。H 表示按短整型量输出,l表示按长整型量输出。 类型:是格式说明符中必不可少的,它表示 输出列表里要输出的数据类型。见下表。 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 65 表表2-8 printf2-8 printf函数常用类型格式符表函数常用类型格式
49、符表 格式字符形格式字符形 式式 格式字符含义格式字符含义 d( d(或或i) i)表示以十进制形式输出一个带符号的整数表示以十进制形式输出一个带符号的整数 (默认正数不输出符号)(默认正数不输出符号) f f表示以小数形式输出带符号的实数(包括表示以小数形式输出带符号的实数(包括 单、双精度),默认输出单、双精度),默认输出6 6位小数位小数 c c表示输出一个单字符表示输出一个单字符 s s表示输出一个字符串表示输出一个字符串 % %表示输入百分号本身表示输入百分号本身 P31 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 66 注:输出是从右向左计
50、算输出项后,按格式说注:输出是从右向左计算输出项后,按格式说 明的顺序对应输出。一般格式说明和输出项的明的顺序对应输出。一般格式说明和输出项的 个数和类型应相同,如不匹配系统并不报错,个数和类型应相同,如不匹配系统并不报错, 系统将按以下操作。系统将按以下操作。 a a、格式说明的个数少于输出项的个数,多余的、格式说明的个数少于输出项的个数,多余的 输出项将不输出;格式说明的个数多于输出项输出项将不输出;格式说明的个数多于输出项 的个数,多余的格式说明将输出随机的值。的个数,多余的格式说明将输出随机的值。 b b、整型数据按、整型数据按%f %f 输出,出现运行错误;实型输出,出现运行错误;实
51、型 数据按数据按%d %d 输出,运行错结果为输出,运行错结果为0 0; P34 67 printf(Hello World! n); printf(fahr = %d, celsius = %dn, fahr, celsius); 格式控制字符串:格式控制字符串: 普通字符:原样输出普通字符:原样输出 格式控制说明格式控制说明:按指定的格式输出数据按指定的格式输出数据,% 与数据类型有关与数据类型有关 int型型 :%d float double型:型:%f char型:型:%c 字符串:字符串:%s printf(“a = %d, b = %dn, 100, 200); 输出输出: :a
52、=100, b = 200 printf(格式控制字符串格式控制字符串, 输出参数输出参数1, , 输出参数输出参数n); 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 68 P35 功能:从键盘上将数据按指定的格式输入并赋功能:从键盘上将数据按指定的格式输入并赋 给指定的变量。给指定的变量。 格式:格式:scanf(格式控制字符串,地址列表格式控制字符串,地址列表): 格式控制字符串的定义与使用方法和格式控制字符串的定义与使用方法和printf函函 数大致相同,数大致相同,但不能显示非格式字符串,即但不能显示非格式字符串,即 不能显示提示字符串不能显示
53、提示字符串。 地址列表是要赋值的各变量地址。地址是由地址列表是要赋值的各变量地址。地址是由 地址运算符地址运算符“ b); 写成写成scanf(scanf(“%d,%d%d,%d”,a,b);,a,b);, 这是初学者容易出错的地方。这是初学者容易出错的地方。 (2) (2) 在在“格式控制字符串格式控制字符串”中除了格式说明符外,还有中除了格式说明符外,还有 其他字符其他字符,则在输入数据时在对应位置上应输入与则在输入数据时在对应位置上应输入与 这些字符相同的字符。这些字符相同的字符。 例如例如 scanf ( scanf (a=a=%d%d,b=,b=%d,%d, 则输入时应输入:则输入时
54、应输入: a= a=1212,b=,b=-2-2 其他任何输入形式都不正确。其他任何输入形式都不正确。 P38 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 72 p例:例: scanf(“%d,%d,%d”, scanf(“%d%d%d”, scanf(“x=%d,y=%d,%d”, 键盘输入时分别是: 12,34,35 12 34 35(可用空格,回车,Tab) x=5,y=8 73 u例2-18 #include void main() int x,y; scanf(“%2d%*3d%4d”, printf(“nx=%d,y=%dn”,x,y);
55、注意:%*3d的作用。 P38 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 74 (3) (3) 输入数据时,遇到以下情况认为该输入数据时,遇到以下情况认为该数据输入结束数据输入结束: 按指定的宽度结束;按指定的宽度结束; 遇空格,或遇空格,或“回车回车”键,或键,或“TabTab”键;键; 遇到非法输入。遇到非法输入。 如:如:scanf (%3d%d%c%f, scanf (%3d%d%c%f, 若输入:若输入:12345a234o.7812345a234o.78 第一个数据取第一个数据取3 3位,即将位,即将123123赋给变量赋给变量a a。4
56、545后面遇字后面遇字 母母a a,表示,表示4545后没有数据了,因此将后没有数据了,因此将4545赋给第二个变赋给第二个变 量量b b。字符。字符aa赋给第三个变量赋给第三个变量strstr。 P39 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 75 (4) (4) 在用在用“%c%c”格式输入字符时,所有输入的字格式输入字符时,所有输入的字 符(符(包括空格字符和包括空格字符和“转义字符转义字符”)都作为有效)都作为有效 字符。字符。 例如:例如: scanf scanf(%c%c%c(%c%c%c, 若输入为:若输入为: a ab bc c 则
57、把字符则把字符a a赋给变量赋给变量a a,把字符空格赋给变量,把字符空格赋给变量b b, 把字符把字符b b赋给变量赋给变量c c。 (5) (5) 当输出的类型格式符与数据的类型不一致时,当输出的类型格式符与数据的类型不一致时, 虽然编译没有提示出错,但结果有可能不正确。虽然编译没有提示出错,但结果有可能不正确。 76 scanf(格式控制字符串格式控制字符串, 输入参数输入参数1, , 输入参数输入参数n); 格式控制字符串:格式控制字符串: 格式控制说明格式控制说明: 按指定的格式输入数据按指定的格式输入数据, % 与数据类型有关与数据类型有关 int型型 :%d float型:型:%
58、f double型:型:%lf char型:型:%c 字符串:字符串:%s 普通字符:原样输入普通字符:原样输入 例如:例如: scanf(%lf, 输入输入: : 9.5 scanf(x=%lf, 输入输入: x=9.5 尽量不要出现普通字符尽量不要出现普通字符 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 77 1. 1.字符输入函数字符输入函数getchargetchar 字符输入函数字符输入函数getchar()getchar()的功能是从标准设备的功能是从标准设备 (键盘)上读入一个字符。其一般调用形式:(键盘)上读入一个字符。其一般调用形式:
59、 getchar();getchar(); 该函数没有参数,但一对圆括号不能省略。该函数没有参数,但一对圆括号不能省略。 getchar()getchar()只能从键盘上接收一个字符,其常用只能从键盘上接收一个字符,其常用 形式:形式:ch= getchar()ch= getchar()与与scanf(scanf(“%c%c”, putchar(c); 其中其中c c是参数,它可以是整型或字符型变量,也是参数,它可以是整型或字符型变量,也 可以是整型或字符型常量或表达式。可以是整型或字符型常量或表达式。 当是整型量时,输出以该数值作为当是整型量时,输出以该数值作为ASCIIASCII码所对码所
60、对 应的字符;应的字符;当是字符型量时,直接输出字符。当是字符型量时,直接输出字符。 其功能和其功能和printf(printf(“%c%c”,c),c)等价。等价。 P40 例如:putchar(a); 输出字符a putchar(65); 输出与65对应的ASCII的 字符A putchar(“n”); 输出换行符 2021-7-9第第2章章 基本数据类型、运算符和表达式基本数据类型、运算符和表达式 79 1. 1.字符串输入函数字符串输入函数getsgets gets()gets()函数用来从标准输入设备函数用来从标准输入设备( (键盘键盘) )读取字符串直读取字符串直 到回车结束到回车
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 压疮的问答试题及答案
- 保险AI算力算力安全机制
- 小学杠杆滑轮试题及答案
- 自贡市贡井区2027届四上数学期末检测试题含解析
- 2027届曲靖市沾益县数学六年级第一学期期末质量检测模拟试题含解析
- 2026北京化工大学财务处管理岗位招聘2人参考题库含答案详解【黄金题型】
- 2027届广西桂林市七星区将军桥小学数学四上期末经典模拟试题含解析
- 2027届广西壮族柳州市柳南区四上数学期末质量跟踪监视试题含解析
- 河南省郑州市2027届数学六上期末学业质量监测模拟试题含解析
- 昆明市五华区2027届数学六年级第一学期期末经典模拟试题含解析
- 2026年7月n2试题答案
- 2026年电信智慧家庭工程师三级认证考试题及答案
- 2026年青岛能源燃气集团校园招聘考试真题(附答案)
- 高中物理必修3-基础知识自测小纸条(含答案)
- 教育局行政审批管理制度
- TSG 92-2026 承压类特种设备安全附件安全技术规程
- 2026年人教版七年级数学上册期末复习易错题28个(90题)附解析
- 生化质控失控的案例分析
- 2026届新高考数学冲刺复习2025年高考数学新课标2卷第16题说题课件
- 大连海事大学公开招聘事业编制非教学科研人员23人(第一批)考试题库及答案1套
- 江苏省招标中心有限公司招聘笔试真题2024
评论
0/150
提交评论