版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LOGO 由PowerBar模板组提供 第二章第二章 基本类型数据及其运算基本类型数据及其运算 计算机计算机程序程序的功能是对的功能是对数据数据进行进行加工和处理加工和处理。 通常,一个程序应包括对数据的描述和对数据处理通常,一个程序应包括对数据的描述和对数据处理 的描述。的描述。 对数据的描述,即对数据的描述,即数据结构数据结构。对数据处理的描。对数据处理的描 述,即述,即算法算法。在。在C C语言中,数据结构以数据类型的形语言中,数据结构以数据类型的形 式出现,算法由语句序列实现。式出现,算法由语句序列实现。 第第2 2章章 基本类型数据及其运算基本类型数据及其运算 基本类型数据及其运算基
2、本类型数据及其运算 2.3 2.3 整型数据整型数据 2.2 2.2 常量与变量常量与变量 2.1 C 2.1 C 语言的数据类型语言的数据类型 2.4 2.4 实型数据实型数据 2.5 2.5 字符型数据字符型数据 2.6 2.6 运算符与表达式运算符与表达式 2.7 2.7 数据的类型转换数据的类型转换 2.8 2.8 数据的输入与输出数据的输入与输出 2.9 2.9 顺序结构程序设计顺序结构程序设计 2.1 C2.1 C语言的数据类型语言的数据类型 2.1 c2.1 c语言的数据类型语言的数据类型 数据的值有两种不同的表现形式:数据的值有两种不同的表现形式:常量常量和和变量变量。 常量常
3、量的类型从数值能得到的类型从数值能得到, ,变量变量需要命名、规定需要命名、规定 其类型,确定其存储空间大小、位置。其类型,确定其存储空间大小、位置。 2.2.1 2.2.1 标识符标识符 在在C C语言中,标识符就是常量、变量、数组、语言中,标识符就是常量、变量、数组、 函数、类型和语句的函数、类型和语句的名称名称,分为,分为关键字关键字、预定义标预定义标 识符识符和和用户标识符用户标识符3 3种类型。种类型。 1. 1. 数据类型数据类型关键字关键字 (1) (1) 基本数据类型(基本数据类型(5 5个)个) voidvoidcharcharint int float float doub
4、ledouble (2) (2) 类型修饰关键字(类型修饰关键字(4 4个)个) short short long long signed signed unsignedunsigned (3) (3) 复杂类型关键字(复杂类型关键字(5 5个)个) struct struct union union enum enum typedef typedef sizeofsizeof (4) (4) 存储级别关键字(存储级别关键字(6 6个)个) auto auto static static register register extern extern const const volatilev
5、olatile ANSI CANSI C标准标准C C共有共有3232个关键字,个关键字,19991999年年ISOISO推出的推出的C99C99标准新标准新 增了增了5 5个关键字(见附录个关键字(见附录C C)。根据关键字的作用,可以将)。根据关键字的作用,可以将 关键字分为关键字分为数据类型数据类型关键字和关键字和流程控制流程控制关键字两大类。关键字两大类。 2. 2. 流程控制关键字流程控制关键字 (1) (1) 跳转结构(跳转结构(4 4个)个) return return continue continue break break gotogoto (2) (2) 分支结构(分支结
6、构(5 5个)个) if if else else switch switch casecase default default (3) (3) 循环结构(循环结构(3 3个)个) for for do do whilewhile C99C99新增新增5 5个关键字:个关键字: inlineinlinerestrictrestrict _bool_bool_Complex_Complex _Imaginary_Imaginary 2.2.1 2.2.1 标识符标识符 2.2.预定义标识符预定义标识符 预定义标识符通常包括预定义标识符通常包括C C编译系统提供的编译系统提供的标准库标准库 函数名
7、函数名(如(如printfprintf、scanfscanf等)和编译预处理等)和编译预处理命令名命令名 (如(如define define 、includeinclude等)。等)。 2.2.1 2.2.1 标识符标识符 在在C C语言中,预定义标识符也有语言中,预定义标识符也有特定的含义特定的含义。虽。虽 然预定义标识符也可以作为用户标识符使用,但这然预定义标识符也可以作为用户标识符使用,但这 样会失去系统规定的样会失去系统规定的原意原意。 3.3.用户标识符用户标识符 C C程序中用于标识程序中用于标识变量变量、符号常量符号常量、数组数组、函数函数 和数据类型等对象的一个和数据类型等对象
8、的一个字符序列字符序列,统称为用户定,统称为用户定 义标识符。义标识符。 C C语言规定用户标识符只能由语言规定用户标识符只能由字母、数字和下划字母、数字和下划 线组成,且以字母或下划线开头线组成,且以字母或下划线开头。 2.2.1 2.2.1 标识符标识符 2.2.1 2.2.1 标识符标识符 说明:说明: (1)C(1)C语言中同一字母的大小写,被认为是两个不同语言中同一字母的大小写,被认为是两个不同 的字符。例如:的字符。例如: totaltotal、TOTALTOTAL、ToTaLToTaL、tOtAl tOtAl 不同的用户标识符。不同的用户标识符。 (2)C(2)C语言的语言的关键
9、字关键字不能不能用作用户标识符。例如:用作用户标识符。例如: int int 不合法不合法 IntInt、INTINT、iNt iNt 合法合法 (3)(3)用户标识符的命名要见名知意。用户标识符的命名要见名知意。 例如:例如: name/xmname/xm(姓名)、(姓名)、sex/xbsex/xb(性别)、(性别)、age/nlage/nl(年龄)。(年龄)。 2.2.1 2.2.1 标识符标识符 (4)(4)避免使用易混字符。避免使用易混字符。 例如:例如: 1 1、l l、i i;0 0、o o、O O;p p、P P;x x、X X;2 2、z z、Z Z等。等。 file6file
10、6、stu_namestu_name、DeFaultDeFault、_9_9、xandy xandy 正确正确 6file6file、stu-namestu-name、defaultdefault、-9-9、x ; 例如:例如: int i,j,k;int i,j,k; float x,y,z; float x,y,z; 2.2.3 2.2.3 变量变量 2.2.变量赋值变量赋值 变量赋值有如下几种方式。变量赋值有如下几种方式。 (1) (1)变量赋初值变量赋初值。定义变量时直接赋值,也称为。定义变量时直接赋值,也称为 变量的变量的初始化初始化。例如:。例如: int a=10,b=9,c=6
11、; int a=10,b=9,c=6; float x=3.0,y=1.0,z=2.0; float x=3.0,y=1.0,z=2.0; 注:不能将同初值的变量赋初值时写成以下形式:注:不能将同初值的变量赋初值时写成以下形式: int a=b=c=6;int a=b=c=6; 只能写成:只能写成: int a=6, b=6, c=6 int a=6, b=6, c=6 2.3 2.3 整型数据整型数据 整型数据整型数据包括整型整型数据整型数据包括整型常量常量和整型和整型变量变量。 2.3.12.3.1整型常量整型常量 整型常量即整型常量即整数整数,在语言中有,在语言中有3 3种表示形式种表示
12、形式: : 十进制十进制形式形式: :与数学上的整数表示相同与数学上的整数表示相同。例如例如: 12, -100, 0: 12, -100, 0 八进制八进制形式形式: :在数码前加数字在数码前加数字0,0,数码范围数码范围0-70-7。 例如例如: : 0 012=10(12=10(十进制)十进制) 十六进制十六进制形式形式: :在数码前加在数码前加0X0X(数字(数字0 0和字母和字母X X,大小写均可,大小写均可) ), 数码范围数码范围0-9,a,b,c,d,e,f(0-9,a,b,c,d,e,f(大写也可大写也可) )。 例如例如: : 0 x0 x12=18(12=18(十进制)十
13、进制) 0 xab=171(0 xab=171(十进制十进制) ) 整型常量的类型:整型常量的类型: 据值大小默认类型据值大小默认类型, ,整型常量后加整型常量后加l l或或L L,认为是,认为是long intlong int型型 2.3 2.3 整型数据整型数据 2.3.2 2.3.2 整型变量整型变量 1. 1. 整型数据存放形式整型数据存放形式 整型数据在内存中以整型数据在内存中以二进制补码二进制补码形式存放。形式存放。 原码原码:最高位存放数的符号:最高位存放数的符号(0(0为正,为正,1 1为负为负) ),其余位,其余位 以二进制形式存储数值部分。以二进制形式存储数值部分。 反码反
14、码:正数的反码是原码本身;负数的反码为对原码:正数的反码是原码本身;负数的反码为对原码 按位按位( (除符号位外除符号位外) )取反。取反。 补码补码:正数的补码与原码相同;负数的补码等于其反:正数的补码与原码相同;负数的补码等于其反 码加码加1(1(在最低位加在最低位加1)1)。 2.3 2.3 整型数据整型数据 例如:例如:290290和和-290-290的原码、反码和补码如图的原码、反码和补码如图2-32-3所示。所示。 2.3 2.3 整型数据整型数据 2. 2. 整型变量的分类整型变量的分类 根据占用内存字节数的不同,整型变量分为:根据占用内存字节数的不同,整型变量分为: (1)(1
15、)基本整型基本整型(类型关键字为(类型关键字为intint)。)。 (2)(2)短整型短整型(类型关键字为(类型关键字为shortshort int int)。)。 (3)(3)长整型长整型(类型关键字为(类型关键字为longlong int int)。)。 Turbo C 2.0 Turbo C 2.0和和Turbo C+ 3.0Turbo C+ 3.0为为shortshort和和intint分分 配配2 2个字节,为个字节,为longlong分配分配4 4个字节;个字节; VC+ 6.0 VC+ 6.0为为shortshort分配分配2 2个字节,为个字节,为intint和和longlon
16、g 分配分配4 4个字节。个字节。 2.3 2.3 整型数据整型数据 3.3.整型变量的符号属性整型变量的符号属性 (1)(1)有符号整型数据。有符号整型数据。 有符号整型数据的最有符号整型数据的最高高位为位为符号位符号位,符号位,符号位 为为0 0表示正数,符号位为表示正数,符号位为1 1表示负数。表示负数。 有符号型又分为:有符号型又分为: 有符号基本整型(有符号基本整型(signed intsigned int) 有符号短整型(有符号短整型(signed short intsigned short int) 有符号长整型(有符号长整型(signed long intsigned long
17、 int) 2.3 2.3 整型数据整型数据 (2)(2)无符号整型数据。无符号整型数据。 无符号整型数据表示的都是无符号整型数据表示的都是正数正数,其最高位,其最高位 不是符号位而是数值位。不是符号位而是数值位。 无符号型又分为:无符号型又分为: 无符号基本整型(无符号基本整型(unsigned intunsigned int) 无符号短整型(无符号短整型(unsigned short intunsigned short int) 无符号长整型(无符号长整型(unsigned long intunsigned long int) 2.3 2.3 整型数据整型数据 4.4.整型数据值域整型数据
18、值域 整型数据所占字节数和数值范围如表整型数据所占字节数和数值范围如表2-12-1所示。所示。 2.3 2.3 整型数据整型数据 有符号和无符号整型数据在有符号和无符号整型数据在2 2个字节中存放形式如图个字节中存放形式如图 2-42-4和图和图2-52-5所示。所示。 2.4 2.4 实型数据实型数据 实型数据包括实型实型数据包括实型常量常量和实型和实型变量变量。 2.4.12.4.1实型常量实型常量 有两种表示形式:有两种表示形式: 十进制形式十进制形式: :由数字和小数点组成由数字和小数点组成, ,小数点不能单独出现小数点不能单独出现 指数形式:由指数形式:由“十进制小数十进制小数” +
19、 + “ e( e(或或E)E)” + + “十进十进 制数整数制数整数” 三部分组成,三部分组成,e e或或E E的两边必须有数的两边必须有数,且其,且其 后面必须为整数。后面必须为整数。 例如例如: 12.5e-6 : 12.5e-6 表示表示12.512.51010-6 -6 十进制小数十进制小数 e(e(或或E)E) 十进制数整数十进制数整数 实型常量的类型:默认为实型常量的类型:默认为型,后面加型,后面加 (或或 ),则表示该数是),则表示该数是float类类 型。型。 例如:例如:3.5 、1e2 2.4 2.4 实型数据实型数据 0.235e40.235e4、24458.6 e-
20、424458.6 e-4、5.7854 e7 5.7854 e7 合法合法 125e4.5125e4.5、e4e4、.e4.e4、e e 不合法不合法 123.456123.456可以写成:可以写成: 123.456e0123.456e0、12.3456e112.3456e1、1.23456e21.23456e2、 0.123456e30.123456e3、1234.56e-11234.56e-1 等。等。 其中:其中: 1.23456e2 1.23456e2 规范化的指数形式规范化的指数形式 2.4 2.4 实型数据实型数据 2.4.22.4.2实型变量实型变量 实型数据的存放形式实型数据的
21、存放形式 实数可以写成:实数可以写成: N N = = M M2 2E E 其中:其中:M M称为称为N N的尾数,的尾数,E E称为称为N N的阶码,的阶码, M M前面的正、负号称为数符。前面的正、负号称为数符。 系统把实型数据的数符、尾数和阶码分别存放,以系统把实型数据的数符、尾数和阶码分别存放,以floatfloat型型 为例,实型数据在其中存放形式如图为例,实型数据在其中存放形式如图2-62-6所示。所示。 2.4 2.4 实型数据实型数据 2.2.实型变量分类实型变量分类 C C语言中实型变量有语言中实型变量有3 3种类型:种类型: (1) (1)单精度型。类型关键字为单精度型。类
22、型关键字为floatfloat。 (2) (2)双精度型。类型关键字为双精度型。类型关键字为doubledouble。 (3) (3)长双精度型。类型关键字为长双精度型。类型关键字为long doublelong double。 实型数据所占字节数及数值范围如表实型数据所占字节数及数值范围如表2-22-2所示。所示。 n字符型字符型char,分配,分配 1 Byte n字符型数据是指字母、数字、各种符号等用字符型数据是指字母、数字、各种符号等用ASCII值表值表 示的字符示的字符,如如a,ASCII值为值为01100001 因字符的因字符的ASCII值为整数,故可像整数一样参与值为整数,故可像
23、整数一样参与 整数相关的运算和处理。整数相关的运算和处理。 n ASCII字符集字符集,所有可用字符所有可用字符256个个,每个字符有唯一的每个字符有唯一的 ASCII 码值。其中:码值。其中: 0-9 升序排列升序排列 A-Z 升序排列升序排列 a-z 升序排列升序排列 2.5 2.5 字符型数据字符型数据 2.5 2.5 字符型数据字符型数据 字符型数据包括字符字符型数据包括字符常量常量和字符和字符变量变量。 2.5.1 2.5.1 字符常量字符常量 n可视字符常量可视字符常量 : 单引号单引号括起来的括起来的单个单个可视字符可视字符 如:如:a、A 、+ 、3、 n转义字符常量转义字符常
24、量:以反斜杠以反斜杠“ ”开头后跟规定的单个开头后跟规定的单个字字 符符或或数字数字 如:如:n 101 x41n 101 x41 一个字符可有多种表示方法:一个字符可有多种表示方法: 6565(十进制)(十进制)=0 x41=0 x41(十六进制)(十六进制)=0101=0101(八进制)(八进制) 字符字符A A可以表示为可以表示为AA、x41x41、101101 、6565、0 x410 x41、01010101。 2.5 2.5 字符型数据字符型数据 常用转义字符见表常用转义字符见表2-32-3所示。所示。 2.5.2 2.5.2 字符变量字符变量 字符字符变量变量在内存中占在内存中占
25、1 1个字节的存储空间。个字节的存储空间。 用关键字用关键字charchar来定义,例如:来定义,例如: char ch1,ch2; char ch1,ch2; ch1= ch1=A A; ch2=; ch2=a a; / ; / 给字符变量赋值给字符变量赋值 将一个字符常量存储到一个字符变量中,实际上将一个字符常量存储到一个字符变量中,实际上 是将该字符的是将该字符的ASCIIASCII码值存储到内存单元中。码值存储到内存单元中。 2.5.2 2.5.2 字符变量字符变量 字符型数据存储形式与整数的存储形式一样,字符型数据存储形式与整数的存储形式一样, 语言允许字符型数据与整型数据相互转换。
26、语言允许字符型数据与整型数据相互转换。 【例例2-22-2】字符型数据既可以字符形式输出,也可以字符型数据既可以字符形式输出,也可以 整数形式输出。整数形式输出。 #include #include int main()int main() char ch1,ch2;char ch1,ch2; ch1=A; ch2=97; ch1=A; ch2=97; printf(ch1=%c,ch2=%cn,ch1,ch2);printf(ch1=%c,ch2=%cn,ch1,ch2); printf(ch1=%d,ch2=%dn,ch1,ch2);printf(ch1=%d,ch2=%dn,ch1,ch
27、2); return 0;return 0; 2.5.2 2.5.2 字符变量字符变量 【例例2-32-3】整型数据既可以字符形式输出,也可以整整型数据既可以字符形式输出,也可以整 数形式输出。数形式输出。 #include #include int main()int main() int int ch1,ch2; ch1,ch2; ch1=A; ch2=97; ch1=A; ch2=97; printf(ch1=%c,ch2=%cn,ch1,ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); printf(ch1=%d,ch2=%dn,ch1,ch2); print
28、f(ch1=%d,ch2=%dn,ch1,ch2); return 0; return 0; 2.5.2 2.5.2 字符变量字符变量 (3)(3)整型数据和字符型数据可以进行运算整型数据和字符型数据可以进行运算 字符型数据和整型数据进行运算时,是其字符型数据和整型数据进行运算时,是其ASCIIASCII码值参与码值参与 运算。例如:运算。例如: A+3A+3 / /值为值为6868,对应字符,对应字符D D 5-05-0 / /值为值为5 5 5+05+0 / /值为值为5353,对应字符,对应字符55 例例: : 写出程序写出程序 的功能。的功能。 #include void main()
29、 int i; for(i=65;i91;i+) printf(%c %cn,); 程序功能:程序功能: 输出输出26个英文字母的大小写个英文字母的大小写 l 用双撇号括起的一个字符序列用双撇号括起的一个字符序列 如如:ABC,123,a,nt,nGood morning“:ABC,123,a,nt,nGood morning“ 双引号里可以有任意多个字符,也可以没有字符,字符双引号里可以有任意多个字符,也可以没有字符,字符 可以是转义字符。可以是转义字符。 n G o o dm orni n g 0 a0 字符串字符串 结束标记结束标记 l 字符串常量的长度:所包含的字符个数字符串常量的长度
30、:所包含的字符个数 l 字符串常量的存储方式:字符串常量的存储方式: 没有没有字符串变量字符串变量,用字符数组存放,以后讲,用字符数组存放,以后讲 2.5.3 2.5.3 字符串常量字符串常量 算术表达式、赋值表达式、关系表达式、算术表达式、赋值表达式、关系表达式、 逻辑表达式、条件表达式和逗号表达式等。逻辑表达式、条件表达式和逗号表达式等。 由由运算符运算符和和括号括号将将运算对象运算对象连接起来的符连接起来的符 合合语言语法规则语言语法规则的式子的式子 ,它的,它的值值和和类型类型 由参加运算的运算符和运算对象决定。由参加运算的运算符和运算对象决定。在在 表达式求值时,先按表达式求值时,先
31、按运算符的优先级别运算符的优先级别高高 低执行,如运算对象两侧的运算符优先级低执行,如运算对象两侧的运算符优先级 别相同时,则按规定的别相同时,则按规定的结合方向结合方向进行处理进行处理. . 2.6 具有运算功能的具有运算功能的符号符号. 常量、变量和函数等表达式常量、变量和函数等表达式. C C 运运 算算 符符 算术运算符:(算术运算符:(+ - + - * * / % + - / % + -) 关系运算符:(关系运算符:( = != = !=) 逻辑运算符:(!逻辑运算符:(! char ch; int i; short s;int i; short s; float f; doubl
32、e d;float f; double d; ch / s + f ch / s + f * * i - d i - d int int int int int double double double double double 2.6.4 2.6.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 1.1.赋值运算符赋值运算符 v(1)(1)符号:符号:= = v 格式:格式:变量变量= =表达式表达式( (= =左侧必为变量左侧必为变量) ) v 功能:先求出右侧表达式值,再转换值的类型为左侧变量类功能:先求出右侧表达式值,再转换值的类型为左侧变量类 型,然后赋给左侧变量,并将左侧变量的值
33、作为表达式的值。型,然后赋给左侧变量,并将左侧变量的值作为表达式的值。 v 结合性:右结合结合性:右结合 例例 d=func();d=func(); c=d+2; c=d+2; x=y=z=3 x=y=z=3* *4;4; 2. 复合赋值运算符复合赋值运算符 v 种类种类:+= -= *= /= %= / /复合算术运算符复合算术运算符 = = float f=100; 则将则将100100转换成实型数据转换成实型数据100.0100.0,再以指数形式存到,再以指数形式存到f f 所占存储单元中。所占存储单元中。 2.6.4 2.6.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 实型数据赋
34、给整型变量时,小数部分将被舍弃。实型数据赋给整型变量时,小数部分将被舍弃。 例如:例如: int a = int a = 3 3.6415; .6415; 则将取整后的整数则将取整后的整数3 3以补码形式存到以补码形式存到a a所占内存单元中所占内存单元中 (2)(2)实型数据之间类型转换实型数据之间类型转换 floatfloat数据赋给数据赋给doubledouble变量时,数值不变,有变量时,数值不变,有 效数据扩展到效数据扩展到1616位,存储到位,存储到doubledouble变量中。变量中。 doubledouble数据赋给数据赋给floatfloat变量时,截取前面变量时,截取前面
35、7 7位有位有 效数据,存储到效数据,存储到floatfloat变量中。变量中。 2.6.4 2.6.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 (3)(3)整型数据之间、整型数据与字符型数据之间类型整型数据之间、整型数据与字符型数据之间类型 转换转换 短短(字节数少)的数据赋给(字节数少)的数据赋给长长(字节数多)的(字节数多)的 变量变量 短的短的有符号有符号数据赋给长的变量时,需要进行符号数据赋给长的变量时,需要进行符号 位位扩展扩展。 将数据赋给变量的将数据赋给变量的低低字节,如果数据的符号位为字节,如果数据的符号位为0 0, 则变量的则变量的高字节补高字节补0 0;反之,变量的
36、;反之,变量的高字节补高字节补1 1,以保,以保 持数值不改变。如图持数值不改变。如图2-122-12所示。所示。 2.6.4 2.6.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 2.6.4 2.6.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 l短的短的无无符号数据赋给长的变量时,将数据赋符号数据赋给长的变量时,将数据赋 给变量的低字节,高字节补给变量的低字节,高字节补0 0。如图。如图2-132-13所示。所示。 2.6.4 2.6.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 长长的数据赋给的数据赋给短短的变量时,只将的变量时,只将低低字节数据字节数据原封不原封不 动动地赋
37、给变量。如图地赋给变量。如图2-142-14所示所示 2.6.4 2.6.4 赋值运算符和赋值表达式赋值运算符和赋值表达式 将数据赋给长度将数据赋给长度相同相同的变量时,原样赋值,如图的变量时,原样赋值,如图2-2- 1515所示。所示。 2.6.5 2.6.5 自增、自减运算符自增、自减运算符 + +、-是是单目单目运算符,运算对象只能是运算符,运算对象只能是变量变量,优,优 先级为先级为2 2,结合方向为,结合方向为自右至左自右至左。 自增、自减运算符有两个功能:自增、自减运算符有两个功能: (1) (1)取由该运算符构成表达式的值取由该运算符构成表达式的值 (2) (2)实现变量(运算对
38、象)自身的加实现变量(运算对象)自身的加1 1或减或减1 1运算运算 2.6.5 2.6.5 自增、自减运算符自增、自减运算符 自增、自减运算符都有两种用法:自增、自减运算符都有两种用法: (1)(1)前置前置运算运算例如:例如:i i、i i 先使变量先使变量i i的值增(或减),然后再以变化后的值增(或减),然后再以变化后i i 的值作为表达式的值参与其它运算,即先增减、后求的值作为表达式的值参与其它运算,即先增减、后求 值。值。 (2)(2)后置后置运算运算例如:例如:i i、i i 先将变量先将变量i i的值作为表达式的值参与其它运算,的值作为表达式的值参与其它运算, 然后再使变量然后
39、再使变量i i的值增(或减),即先求值、后增的值增(或减),即先求值、后增 减。减。 2.6.5 2.6.5 自增、自减运算符自增、自减运算符 i=2;i=2; j=i+; / j=i+; / 相当于相当于: j=i; i=i+1;: j=i; i=i+1; j=+i; / j=+i; / 相当于:相当于:i=i+1;j=i;i=i+1;j=i; 2.6.5 2.6.5 自增、自减运算符自增、自减运算符 【例例2-42-4】自增、自减运算符的用法自增、自减运算符的用法 #include int main() int x=6, y; printf(x=%dn,x); y = +x; printf
40、(y=+x: x=%d,y=%dn,x,y); y = x-; printf(y=x-: x=%d,y=%dn,x,y); return 0; 运行结果:运行结果: x=6x=6 y=+x: x=7,y=7y=+x: x=7,y=7 y=x-: x=6,y=7 y=x-: x=6,y=7 2.6.5 2.6.5 自增、自减运算符自增、自减运算符 说明说明: : (1)(1)自增、自减运算常用于循环语句中,或用于指针变量中。自增、自减运算常用于循环语句中,或用于指针变量中。 (2)(2)自增、自减运算符不能用于常量和表达式,例如:自增、自减运算符不能用于常量和表达式,例如:5+5+、 -(a+b
41、)-(a+b)等都是非法的表达式。等都是非法的表达式。 (3)(3) 最好避免这种用法,例如:最好避免这种用法,例如:(i+)+(i+)+(i+)(i+)+(i+)+(i+) 2.6.6 2.6.6 逗号运算符、逗号表达式逗号运算符、逗号表达式 用逗号运算符用逗号运算符“,”连接起来的式子,称为逗号表达式,连接起来的式子,称为逗号表达式, 格式:格式:表达式表达式, , 表达式表达式2, 2, , , 表达式表达式n n 逗号运算符的优先级为逗号运算符的优先级为1515,结合方向为自左至右。,结合方向为自左至右。 逗号表达式求解过程为:自左至右,依次计算各表达式逗号表达式求解过程为:自左至右,
42、依次计算各表达式 的值,的值,“表达式表达式n n” 的值作为整个逗号表达式的值。的值作为整个逗号表达式的值。 a=3*5,a*4 /逗号表达式的值为60。 a=3,a*4,a+ /逗号表达式的值为3。 注意:并不是任何地方出现的逗号,都是逗号运算符。很多情 况下,逗号仅用作分隔符,例如:printf(%d%d%d,a,b,c); 例:例: printf(“%d,%d,%d”,(a,b,c),b,c); /3,2,3 2.7 2.7 数据的类型转换数据的类型转换 运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时 赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类
43、型不同的变量时 输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式 函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换 : :不同类型数据运算时先不同类型数据运算时先自动自动转换成同一类型转换成同一类型 2.7 2.7 数据的类型转换数据的类型转换 一般形式:一般形式:(类型名)(类型名)(表达式)表达式) 例例 (int)(x+y)(int)(x+y) (int)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 说明:强制转换得到所需类型的中间变量,说明:强制转换得到所需类型的
44、中间变量,原变量类型不变原变量类型不变 例例 void main()void main() float x; float x; int i; int i; x=3.6; x=3.6; i=(int)x; i=(int)x; printf( printf(“x=%f,i=%dx=%f,i=%d”,x,i);,x,i); 结果:结果:x=3.600000,i=3 2.8 2.8 数据的输入数据的输入/ /输出输出 输入输入是由输入设备向计算机主机输入数据。是由输入设备向计算机主机输入数据。 输出输出是指由计算机主机向输出设备输出数据。是指由计算机主机向输出设备输出数据。 通常输入设备为通常输入设备
45、为键盘键盘,输出设备为,输出设备为显示器显示器。 磁盘磁盘文件即是文件即是输入输入设备又是设备又是输出输出设备。设备。 在C语言中,没有专门的输入输出语句,所有的输入输出 操作都是通过调用标准输入、输出库函数来完成的。 在调用标准输入输出函数时需要用到头文件“stdio.h”, 因此在程序开头应该有以下的预编译命令: include “stdio.h”或 includestdio.h 最常见的输入最常见的输入/ /输出函数:输出函数: 输入:输入:getchar()()、 gets()()、scanf()() 输出:输出:putchar()()、 puts()()、printf()() 2.8
46、.1 2.8.1 格式化输出函数格式化输出函数printfprintf (1 1)函数原型)函数原型 int printf (char *format ,argument,.); (2 2)函数功能)函数功能 函数函数printfprintf将一组参数,按将一组参数,按formatformat给定的格式,把数据格式化给定的格式,把数据格式化 并且输出到标准输出设备。若出错,则返回负数。并且输出到标准输出设备。若出错,则返回负数。 (3 3)函数调用的一般形式)函数调用的一般形式 printf( 格式控制字符串格式控制字符串 ,输出项列表);,输出项列表); 可以是常量、变量和表达式。其类型可以
47、是常量、变量和表达式。其类型 和个数必须与格式控制字符符串中格和个数必须与格式控制字符符串中格 式字符的类型及个数一致。输出项之式字符的类型及个数一致。输出项之 间以间以,分隔。分隔。 分为分为普通字符、转义字符普通字符、转义字符和和 格式说明符格式说明符,控制输出项的,控制输出项的 格式和输出一些提示信息。格式和输出一些提示信息。 例例 printf(“a=%db=%fc=%cn” ,a,b,c);); 2.8.1 2.8.1 格式化输出函数格式化输出函数printfprintf 1. 1. 格式说明符格式说明符 %标识标识宽度宽度.精度精度 h/l 格式字符格式字符 方括号表示该项可方括号
48、表示该项可 有可无有可无 输出精度指示符。输出精度指示符。 对整数,表示至少要输出的数字个数,不足补,多则原样对整数,表示至少要输出的数字个数,不足补,多则原样 输出。输出。 对实数,表示小数点后至多输出的数字个数,不足补,多对实数,表示小数点后至多输出的数字个数,不足补,多 则舍入处理。则舍入处理。 对字符串,表示最多输出的字符个数,不足补空格,多则丢对字符串,表示最多输出的字符个数,不足补空格,多则丢 弃。弃。 - :左对齐输出,缺省为右对齐输出:左对齐输出,缺省为右对齐输出 +:正数输出加号:正数输出加号(+),负数输出减号,负数输出减号(-) 空格:正数输出空格代替加号空格:正数输出空
49、格代替加号(+),负数输出减号,负数输出减号(-) 如:如:+d,-d, d。 十进制整数,指定输出宽度。十进制整数,指定输出宽度。 指定宽度指定宽度实际宽度,补空格。实际宽度,补空格。 指定宽度指定宽度实际宽度,按实际输出。实际宽度,按实际输出。 不指定宽度,按实际输出。不指定宽度,按实际输出。 如:如:+10d 整型整型 数据数据 d/i以有符号十进制形式输出整型数以有符号十进制形式输出整型数 o以无符号八进制形式输出整型数以无符号八进制形式输出整型数 x/X以无符号十六进制形式输出整型数以无符号十六进制形式输出整型数 u以无符号十进制形式输出整型数以无符号十进制形式输出整型数 实型实型
50、数据数据 f以小数形式输出实型数以小数形式输出实型数 e/E以指数形式输出实型数以指数形式输出实型数 g/G按数值宽度最小的形式输出实型数按数值宽度最小的形式输出实型数 字符型字符型 数据数据 c输出一个字符输出一个字符 s输出字符串输出字符串 其他其他 %输出字符输出字符 % 本身本身 h: 短整型短整型 l: 长整型长整型 2.8.1 2.8.1 格式化输出函数格式化输出函数printfprintf 2.2.整型整型数据输出数据输出 整型数据可以用格式符整型数据可以用格式符d d、u u、o o、x x输出,例如:输出,例如: int a = -1;int a = -1; printf(p
51、rintf(有符号十进制有符号十进制= %d = %d 无符号十进制无符号十进制= %un= %un 八进制八进制= %o = %o 十六进制十六进制= %xn,a,a,a,a);= %xn,a,a,a,a); 运行结果: 有符号十进制= -1 无符号十进制 = 4294967295 八进 制= 37777777777 十六进制= ffffffff 说明:在说明:在VC+6.0VC+6.0中,给中,给a a分配分配4 4个字节,将个字节,将-1-1的补码存储到的补码存储到a a所所 占的存储单元中,存放形式如图占的存储单元中,存放形式如图2-162-16所示。所示。 2.8.1 2.8.1 格
52、式化输出函数格式化输出函数printfprintf 3.3.字符型数据输出字符型数据输出 字符型数据即可按字符形式输出,也可按整数形字符型数据即可按字符形式输出,也可按整数形 式输出,例如式输出,例如: char c = A; char c = A; printf( printf(字符字符= %= %c c ASCII= % ASCII= %d d,c,c);,c,c); 运行结果:运行结果: 字符字符= A ASCII= 65= A ASCII= 65 2.8.1 2.8.1 格式化输出函数格式化输出函数printfprintf 4.4.实型数据输出实型数据输出 实型数据(实型数据(floa
53、tfloat型和型和doubledouble型)即可用格式符型)即可用格式符f f 以小数形式输出,也可用格式符以小数形式输出,也可用格式符e e以指数形式输出,以指数形式输出, 例如:例如: float f=12.3456789; float f=12.3456789; printf(f=% printf(f=%f f , f=% , f=%e en,f,f);n,f,f); 运行结果:运行结果: f=12.345679 , f=1.234568e+001f=12.345679 , f=1.234568e+001 2.8.1 2.8.1 格式化输出函数格式化输出函数printfprintf
54、2.8.1 2.8.1 格式化输出函数格式化输出函数printfprintf 2.8.1 2.8.1 格式化输出函数格式化输出函数printfprintf 5.5.输出转换输出转换 注意:注意: (1)(1)较长型数据转换成短型数据输出时,其值不能超出较长型数据转换成短型数据输出时,其值不能超出 短型数据允许的值范围,否则会输出错误的结果,例如:短型数据允许的值范围,否则会输出错误的结果,例如: int a=65536; int a=65536; printf(%hd,a); printf(%hd,a); 在在VC+6.0VC+6.0中,输出结果为中,输出结果为0 0。 2.8.1 2.8.1
55、 格式化输出函数格式化输出函数printfprintf (2)(2)输出的数据类型与输出格式不符时会产生错误的输出的数据类型与输出格式不符时会产生错误的 结果。例如,下面两例均输出错误的结果。结果。例如,下面两例均输出错误的结果。 int d=9; int d=9; printf(%f,d); printf(%f,d); 或或 float c=3.2; float c=3.2; printf(%d,c); printf(%d,c); 切记整型数据不能按实型数据输出,实型数据切记整型数据不能按实型数据输出,实型数据 也不能按整型数据输出。也不能按整型数据输出。 2.8.2 2.8.2 格式化输入
56、函数格式化输入函数scanfscanf (1)(1)函数原型函数原型int scanf(char *format ,argument,.);); (2)(2)函数功能函数功能 按规定格式从键盘输入若干任何类型的数据给按规定格式从键盘输入若干任何类型的数据给argumentargument所指的单元所指的单元; ;返返 回读入并赋给回读入并赋给argumentargument的数据个数;遇文件结束返回的数据个数;遇文件结束返回EOFEOF;出错返回;出错返回0 0。 由由若干个地址若干个地址( (变量地址、字符串首变量地址、字符串首 地址或指针变量等地址或指针变量等) )组成,地址之间以组成,地
57、址之间以 “,”分隔。分隔。C C语言中一个变量的地址语言中一个变量的地址 可以通过可以通过a,b;则则a,ba,b的地址为的地址为 int year,month,day; scanf(%d%d%d, scanf(%d%d%d, 可以输入为:可以输入为: 2012 9 10 2012 9 10 也可以输入为:也可以输入为: 2012 2012 9 10 9 10 2.8.2 2.8.2 格式化输入函数格式化输入函数scanfscanf (2)(2)指定数据宽度指定数据宽度 例如:例如: int year,month,day; int year,month,day; scanf(%4d%2d%2
58、d, scanf(%4d%2d%2d, 可以输入为:可以输入为: 20121221 20121221 则将则将20122012yearyear,12 12 monthmonth,21 21 dayday。 注意:也可以用空格、注意:也可以用空格、EnterEnter键或键或TabTab键作为分隔,即键作为分隔,即 可以输入为:可以输入为: 2012 12 21 2012 12 21 2.8.2 2.8.2 格式化输入函数格式化输入函数scanfscanf (3)(3)指定数据分隔符指定数据分隔符 用普通字符作为输入数据的分隔符,例如:用普通字符作为输入数据的分隔符,例如: scanf(%d-%
59、d-%d, scanf(%d-%d-%d, 输入应为:输入应为: 2012-12-12 2012-12-12 如果输入为:如果输入为: 2012,12,12 2012,12,12 则则2012 2012 yearyear 由于没有遇到由于没有遇到“- -”,scanfscanf函数就结束执行,函数就结束执行, monthmonth和和dayday的值不变。的值不变。 2.8.2 2.8.2 格式化输入函数格式化输入函数scanfscanf (4)(4)遇到非法字符,例如:遇到非法字符,例如: scanf(%d , scanf(%d , 若输入:若输入:1212o o9 9 由于由于1212之后
60、遇到字符之后遇到字符o o ,第,第1 1个数据到此结束,所个数据到此结束,所 以把以把1212赋给赋给m m。 2.8.2 2.8.2 格式化输入函数格式化输入函数scanfscanf 3.3.格式说明格式说明%c%c 格式说明格式说明%c%c用于输入单个字符,从键盘上输入的空用于输入单个字符,从键盘上输入的空 白字符将作为有效字符读入,例如:白字符将作为有效字符读入,例如: char ch1,ch2,ch3; char ch1,ch2,ch3; scanf(%c%c%c, scanf(%c%c%c, 如果输入:如果输入: abc abc 则将则将aa赋给赋给ch1ch1,bb赋给赋给ch2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学大一(计算机应用技术)数据库开发技术实务阶段测试题
- 2025年高职(野生动植物资源保护与利用)珍稀动物保护试题及答案
- 2026年面包制作(全麦面包烘焙)试题及答案
- 2025年中职灌溉与排水技术(灌溉排水操作)试题及答案
- 2025年中职旅游服务(导游实训实操)试题及答案
- 2025年高职汽车电子技术(汽车电器维修)试题及答案
- 2026年环境工程(污水处理技术)试题及答案
- 2025年大学医学信息学(医学信息)试题及答案
- 2025年高职哲学(西方哲学概论)试题及答案
- 2025年高职(烹饪工艺与营养)烹饪原料学阶段测试题及答案
- DB11∕T 637-2024 房屋结构综合安全性鉴定标准
- 2025年新疆中考数学真题试卷及答案
- 2025届新疆乌鲁木齐市高三下学期三模英语试题(解析版)
- DB3210T1036-2019 补充耕地快速培肥技术规程
- 混动能量管理与电池热管理的协同优化-洞察阐释
- T-CPI 11029-2024 核桃壳滤料标准规范
- 统编版语文三年级下册整本书阅读《中国古代寓言》推进课公开课一等奖创新教学设计
- 《顾客感知价值对绿色酒店消费意愿的影响实证研究-以三亚S酒店为例(附问卷)15000字(论文)》
- 劳动仲裁申请书电子版模板
- 赵然尊:胸痛中心时钟统一、时间节点定义与时间管理
- 家用燃气灶结构、工作原理、配件介绍、常见故障处理
评论
0/150
提交评论