版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章第二章 数据类型及输入输出数据类型及输入输出 内蒙古科技大学工程训练中心 2021年6月28日15时15分工程训练中心 徐国海 本节重点本节重点 n数据类型数据类型 n常量与变量常量与变量 n不同类型的数据的输入输出不同类型的数据的输入输出 2021年6月28日15时15分工程训练中心 徐国海 引入引入数据类型数据类型 1 1、数据是程序处理的基本对象。数据是程序处理的基本对象。 2 2、程序中数据分为变量或常量。、程序中数据分为变量或常量。 3 3、每个变量或常量都有确定的数据类型。、每个变量或常量都有确定的数据类型。 4 4、每种数据类型都有确定的存储长度、取值范围及允许的操作。、每
2、种数据类型都有确定的存储长度、取值范围及允许的操作。 5 5、程序中所有数据必须指定其数据类型。、程序中所有数据必须指定其数据类型。 2021年6月28日15时15分工程训练中心 徐国海 数据类型数据类型 基本数据类型基本数据类型构造类型构造类型其它类型其它类型 整型整型 int 字符型字符型 char 实型实型 枚举类型枚举类型 单精度型单精度型float 双精度型双精度型double 数数 组组 结构体结构体 共用体共用体 指针类型指针类型 空空 类类 型型 2021年6月28日15时15分工程训练中心 徐国海 常量常量 在程序中,常量是指常数或其值不能被改变的量。在程序中,常量是指常数或
3、其值不能被改变的量。 1、直接常量:、直接常量: 如:如:12, 123.5, 1.23E7 , a,A, 8, “hello”, “a” 2、符号常量,即用一个标识符代表一个常量。一般用大写字母表、符号常量,即用一个标识符代表一个常量。一般用大写字母表 示。符号常量在其作用域内不能改变,也不能再被赋值。示。符号常量在其作用域内不能改变,也不能再被赋值。 定义符号常量的方法如:定义符号常量的方法如: define PI 3.14159 #define PI 3.1415926 void main( ) float r,c,s; r=2; c=2*PI*r;s=PI*r*r; printf(“c
4、=%f, s=%f”, c,s); 2021年6月28日15时15分工程训练中心 徐国海 常量的类型常量的类型 、整型常量、整型常量 有三种表示方法:有三种表示方法: 十进制整数十进制整数123,-784 八进制整数八进制整数 0123= 十六进制整数十六进制整数 八进制和十六进制只能表示无符号整数八进制和十六进制只能表示无符号整数 长整数表示为:长整数表示为: 123l 123L 无符号整数表示为:无符号整数表示为: 123u )83()123( 108 = )291()123(1230 1016 =x 常量分为:整型常量、实型常量、字符常量、字符串常量常量分为:整型常量、实型常量、字符常量
5、、字符串常量 2021年6月28日15时15分工程训练中心 徐国海 、实型常量,也称浮点数。、实型常量,也称浮点数。 两种表示方法:两种表示方法: ()()十进制小数形式十进制小数形式 由数字和小数点组成(必须有小数点)由数字和小数点组成(必须有小数点) 1.123, 3.1415; ()()指数形式指数形式 123e5, 123E5都表示都表示 但是但是 1.23E7 为规范化的指数形式。输出指数形式的数据时,为规范化的指数形式。输出指数形式的数据时, 按规范化的指数形式输出。(即小数点左边应有一位非零数字)按规范化的指数形式输出。(即小数点左边应有一位非零数字) 5 10123 2021年
6、6月28日15时15分工程训练中心 徐国海 3、字符常量(、字符常量(Character constants) 由一对由一对单引号单引号括起的单个字符,称为字符常量。括起的单个字符,称为字符常量。 如:如:a, 9, + b 退格 单引号 n 换行 ddd 13位八进制数 t 制表符 xhh 12位十六进制数 反斜杠字符 a 响铃 ” 双引号 r 回本行开头 转义字符(转义字符(Escape Sequences)表示控制字符或具有特定用途的字符。表示控制字符或具有特定用途的字符。 2021年6月28日15时15分工程训练中心 徐国海 在内存中,字符数据并不是把字符本身放到内存单元中,而是将在内
7、存中,字符数据并不是把字符本身放到内存单元中,而是将 该字符的相应该字符的相应ASCII码(二进制的形式)放到存储单元中。码(二进制的形式)放到存储单元中。 A 65 01000001 a 97 01100001 ASCII 二进制 如如: 有两个字符型数据有两个字符型数据 A 和和a 2021年6月28日15时15分工程训练中心 徐国海 4、字符串常量(、字符串常量(String Literals) 由一对由一对双引号双引号括起的字符序列称为字符串常量括起的字符序列称为字符串常量,例如:例如: “How do you do?” “china” C规定规定以字符以字符0作为字符串结束的标志作为
8、字符串结束的标志。 在内存中所占字节数为在内存中所占字节数为实际字符个数实际字符个数+1 如字符串常量如字符串常量“china”在内存中存储形式如下:在内存中存储形式如下: chin0a 2021年6月28日15时15分工程训练中心 徐国海 变量变量 1、定义:其值可以改变的量称为变量。、定义:其值可以改变的量称为变量。 程序中的程序中的变量必须先定义后使用变量必须先定义后使用。 2、变量的定义、赋值(初始化)、变量的定义、赋值(初始化) ; int sum; char a,b; float r,s,l; double x,y; 定义了变量后定义了变量后, 变量并没有值,需要给其赋值。变量并没
9、有值,需要给其赋值。 也可以在定也可以在定 义变量的同时给出初值义变量的同时给出初值, 对变量进行初始化。对变量进行初始化。 例如例如: int i ;i9; /* 先定义整型变量先定义整型变量i, 然后赋初值然后赋初值9*/ 2021年6月28日15时15分工程训练中心 徐国海 float r=1.5; /*定义实型变量定义实型变量r的同时,赋其初值的同时,赋其初值1.5*/ char answer=y; /*同上同上*/ 也可以使被定义的变量的一部分赋初值。也可以使被定义的变量的一部分赋初值。 如如 int a,b,c=5; 表示定义表示定义a,b,c为整型变量,并且对为整型变量,并且对c
10、进行初始化,使进行初始化,使c值为值为5。 注意:注意:如对几个变量同时赋初值为如对几个变量同时赋初值为5,应写成,应写成 int a=5,b=5,c=5; 或者或者 int a,b,c; a=b=c=5; 而不能写成而不能写成 int a=b=c=5; 2021年6月28日15时15分工程训练中心 徐国海 3、对变量名的要求。、对变量名的要求。 变量名要做到变量名要做到“见名知意见名知意”,不要使用简单的字符作变量名,不要使用简单的字符作变量名, 以增加程序的可读性。以增加程序的可读性。 变量名一般用变量名一般用小写字母小写字母表示,长度与所用系统有关表示,长度与所用系统有关(8,c 合法标
11、识符合法标识符 非法标识符非法标识符 2021年6月28日15时15分工程训练中心 徐国海 变量的类型变量的类型 变量分为:整型变量、实型变量、字符型变量变量分为:整型变量、实型变量、字符型变量 1、整型变量、整型变量 存放形式存放形式 整形变量在内存中以二进制的形式存放的,一个整形变量在整形变量在内存中以二进制的形式存放的,一个整形变量在 内存中占内存中占个字节。个字节。 0 10 变量变量 i (int i10;) 变量在内存中的实际存放情况变量在内存中的实际存放情况 2021年6月28日15时15分工程训练中心 徐国海 机器内部,数值是以补码表示的。机器内部,数值是以补码表示的。 正数:
12、其补码和原码相同。正数:其补码和原码相同。 负数:其补码为:该数的绝对值的二进制数按位取反加负数:其补码为:该数的绝对值的二进制数按位取反加1。 101 1 1 10011111 1 1 111 1 1 11011111 1 1 111 -35 取反取反 加加1 最高位最高位 最高位是符号位,其为最高位是符号位,其为0时是正数,为时是正数,为1时是负数。时是负数。 2021年6月28日15时15分工程训练中心 徐国海 分类分类 根据数值的范围可以把变量定义成基本类型、短整型和长整型。根据数值的范围可以把变量定义成基本类型、短整型和长整型。 基本类型:用基本类型:用int 标识标识 短整型短整型
13、 : 用用short int 标识标识( short ) 长整型长整型 : 用标识用标识( long ) 进一步修饰,修饰符进一步修饰,修饰符 (无符号数)无符号数) signed (有符号数)有符号数) 如果既不指定如果既不指定unsigned也不指定也不指定signed则隐含为有符号数则隐含为有符号数 ( signed ),), signed可以不写。可以不写。 例:例:unsigned long int a,b; 2021年6月28日15时15分工程训练中心 徐国海 ANSI标准定义的整数类型标准定义的整数类型 类型类型位数位数取取 值值 范范 围围 signed int16-32768
14、32767 即即-215 (215 1) unsigned int16065535 即即0 (216 1) signed short int16-3276832767 即即-215 (215 1) unsigned short int16065535 即即0 (216 1) long int32-24174836482147483647 即即-231 (231 1) unsigned long int3204294967295 即即0 (223 1) 2021年6月28日15时15分工程训练中心 徐国海 2、实型变量、实型变量 类型类型 (内存中字节数内存中字节数) 有效数字有效数字 floa
15、t (4字节字节) 67位位 double (8字节字节) 1516位位 long double (16字节字节) 1819位位 定义方法:定义方法: (单精度)(单精度) float 变量名变量名 (双精度)(双精度) double 变量名变量名 2021年6月28日15时15分工程训练中心 徐国海 3、字符型变量、字符型变量 定义方法:定义方法: char 变量名列表变量名列表 char c1,c2,c3; 取值范围取值范围 ASCII码字符集中的字符。码字符集中的字符。 char c1,c2; c1=e; c2=3 注意:字符串常量不能被赋值到字符变量中,因为字符变量只注意:字符串常量不
16、能被赋值到字符变量中,因为字符变量只 能容纳一个字符。能容纳一个字符。 区别:区别:a “a” 2021年6月28日15时15分工程训练中心 徐国海 数据的输入和输出数据的输入和输出 语言中,在语言中,在stdio.h头文件头文件中定义了标准输入输出函数。中定义了标准输入输出函数。 、printf( )函数函数 格式:格式:printf(“格式控制字符串格式控制字符串”,输出项列表输出项列表); 功能:将输出项按给定的控制格式输出。功能:将输出项按给定的控制格式输出。 例如:例如:printf(“%f ”,sum); 2、scanf( )函数函数 格式:格式:scanf(“格式控制字符串格式控
17、制字符串”,输入项列表输入项列表); 功能:将输入项按给定的控制格式输入。功能:将输入项按给定的控制格式输入。 例如:例如:scanf(“%d%d ”, 2021年6月28日15时15分工程训练中心 徐国海 include void main() char ch=a; int k =65; float x =123.456; printf(”%c,%3c,%dn”,ch,ch,ch); printf(”%d%3d%cn”,k,k,k); printf(”%f,%-7.2f,%10.4fn”,x,x,x); 输出结果是输出结果是: a,_ _ a , 97 65 _ 65 A 123.45600
18、1, 123.46_ , _ _ 123.4560 例例1: 2021年6月28日15时15分工程训练中心 徐国海 include void main() int a,b; char ch1,ch2; float m,n; scanf(“%d%d”, scanf(“%c%c”, scanf(“%f, %f”, 输入时:输入时: 125 785 a b 23.456,612.97 例例2: 2021年6月28日15时15分工程训练中心 徐国海 本节重点本节重点 n掌握运算符的使用掌握运算符的使用 n确定表达式的类型、值确定表达式的类型、值 n不同类型的数据的转换不同类型的数据的转换 2021年6
19、月28日15时15分工程训练中心 徐国海 运算符运算符 一、运算符:一、运算符:能够完成某种操作(运算)的符号。能够完成某种操作(运算)的符号。 二、根据运算符的运算对象(操作数)的多少,运算符可分为:二、根据运算符的运算对象(操作数)的多少,运算符可分为: 单目(一元)运算符单目(一元)运算符 i+ -n 双目(二元)运算符双目(二元)运算符 a+b d/e 三目(三元)运算符三目(三元)运算符 xy? ?x+3: :y*9(条件运算符)条件运算符) 2021年6月28日15时15分工程训练中心 徐国海 优先级优先级运算符运算符操作数操作数结合性结合性 1 ( ) - . 左左右右 2 !
20、- + - /*先乘后加先乘后加*/ (2 2)结合性:结合性:是指表达式中出现同优先级的操作符时,该先做哪是指表达式中出现同优先级的操作符时,该先做哪 个操作符的规定。个操作符的规定。 结合方向:结合方向:“自左向右自左向右”、“自右向左自右向左” 例如:例如: a+b-c 从左至右从左至右 d=a=b=3 从右至左从右至左 2021年6月28日15时15分工程训练中心 徐国海 四、表达式的四、表达式的分类分类 C语言表达式种类很多语言表达式种类很多, 有多种分类方法。有多种分类方法。 我们一般依据运算我们一般依据运算 的特征将表达式分为的特征将表达式分为: 算术表达式算术表达式, 如如a+
21、b*2.0-3.0/5.0 关系表达式关系表达式, 如如x=y, 关系表达式可以认为是逻辑表达式的关系表达式可以认为是逻辑表达式的 特殊情况。特殊情况。 逻辑表达式逻辑表达式, 如(如(x=2) j的值为的值为3(首先将(首先将i的原值赋给的原值赋给j,然后然后i自身再加自身再加1) j=+i; j的值为的值为4(i自身先加自身先加1,然后再将加,然后再将加1后的值赋给后的值赋给j) 2021年6月28日15时15分工程训练中心 徐国海 #include void main() int i,j,k; i=3; j=i+; k=+i; printf(“i=%d,j=%d,k=%dn”,i,j,k
22、); 范例:范例: 输出结果输出结果:i=5,j=3,k=5 2021年6月28日15时15分工程训练中心 徐国海 2 、在表达式中如果有在表达式中如果有2个以上的个以上的“+”或或“-”连写在一起,则编译器首先连写在一起,则编译器首先 识别前面两个识别前面两个+或或-为自增或自减操作符。例如:为自增或自减操作符。例如: 在使用自增或自减运算符时注意如下几个问题在使用自增或自减运算符时注意如下几个问题 : 1、自加或自减运算只能用于变量,不能用于常量或表达式;、自加或自减运算只能用于变量,不能用于常量或表达式; 错误:错误:25+ (i+j)+ 例如例如-i+,只能理解为只能理解为-(i+)。
23、因为因为(-i)+为表达式,表达式是不能自加自减的。为表达式,表达式是不能自加自减的。 i3; j -i+; printf(“%d”,j); 输出结果应为输出结果应为-3,而不是是,而不是是-4。 int a=1 , b=5, c; c=a+b; c=a+b; c=a+b; 正确:正确:c=6 错误:错误:+ 不是双目运算符不是双目运算符 正确:正确:a+ + b 2021年6月28日15时15分工程训练中心 徐国海 3、 表达式中包含有自增、自减运算时表达式中包含有自增、自减运算时, 容易出错容易出错, 务请小心。务请小心。 如有:如有: i=1; 则:则: 类似上面分析类似上面分析, 应为
24、应为3, 当然表达式计算完成当然表达式计算完成后后i 的值同样改的值同样改 变为变为4。 (+i)+(+i)+(+i)的值为多少呢?的值为多少呢? 是是9(=2+3+4)吗?不对!吗?不对! 计算时先对整个表达式扫描计算时先对整个表达式扫描, i 先自增先自增3次次, 由由1234, 如此计算结果为如此计算结果为4+4+4, 等于等于12。 (i+)+(i+)+(i+)的值又是多少呢?的值又是多少呢? 2021年6月28日15时15分工程训练中心 徐国海 赋值运算符和赋值表达式赋值运算符和赋值表达式 1、赋值运算符、赋值运算符: = 使用方法使用方法:变量表达式变量表达式 赋值运算时先计算右边
25、表达式的值赋值运算时先计算右边表达式的值, 然后将右边表达式的值赋然后将右边表达式的值赋 给左边变量给左边变量, 并以此值作为整个赋值表达式的值。并以此值作为整个赋值表达式的值。 (1)赋值运算的优先级为第赋值运算的优先级为第14级级, 次低。次低。 如:如: int i,a,b,c,p; i=3+5%2; /*先计算先计算3+5%2, 得到得到4, 然后将然后将4 赋给赋给i*/ 。 p=(a+b)/c; p=a+b/c; 2021年6月28日15时15分工程训练中心 徐国海 (2)理解以下两赋值表达式的含义:)理解以下两赋值表达式的含义: y5; n5; xy; nn1; (3)赋值运算符
26、具有)赋值运算符具有 “自右向左自右向左”的结合性,赋值运算符右边的表的结合性,赋值运算符右边的表 达式也可以是赋值表达式:达式也可以是赋值表达式: 例如:例如: ab5; 等同于等同于 a(b=5); 2021年6月28日15时15分工程训练中心 徐国海 2、复合赋值运算、复合赋值运算 算术复合赋值运算符算术复合赋值运算符: +=、 =、 *=、 /=、 %= 位复合赋值运算符位复合赋值运算符: /将将a,b中较小数赋中较小数赋x 事实上,三目运算操作是简单事实上,三目运算操作是简单if语句的另一种表达方式。语句的另一种表达方式。 if (ab?a:cd?c:d 相当于相当于 ab?a:(c
27、d?c:d) 2021年6月28日15时15分工程训练中心 徐国海 include void main( ) int x; scanf(%d, x0?printf(%s, 正数正数): printf(%s, 负数负数); 例例 : 判断整数的正负。判断整数的正负。 2021年6月28日15时15分工程训练中心 徐国海 逗号运算符和逗号表达式逗号运算符和逗号表达式 一、逗号运算是双目运算一、逗号运算是双目运算, 一般形式一般形式如下如下: 表达式表达式 1, 表达式表达式 2 先计算表达式先计算表达式 1, 再计算表达式再计算表达式 2, 并以此作为整个表达式的值。并以此作为整个表达式的值。 如
28、:如: a=2, a*6, 先计算先计算a=2, 再计算再计算a*6, 并以此作为整个表达式的值并以此作为整个表达式的值, 表达式的值为表达式的值为 12。 2021年6月28日15时15分工程训练中心 徐国海 二、逗号运算的优先级最低二、逗号运算的优先级最低, , 结合自左向右。结合自左向右。 逗号表达式的更一般使用形式为逗号表达式的更一般使用形式为: : 表达式表达式 1, 1, 表达式表达式 2, 2, 表达式表达式 3, 3, , , 表达式表达式n n 先计算表达式先计算表达式 1, 1, 再计算表达式再计算表达式 2, 2, 再计算表达式再计算表达式 3, 3, , , 再再 计算
29、表达式计算表达式n n的值的值, , 并以此作为整个表达式的值。并以此作为整个表达式的值。 如:表达式如:表达式x=a=3, 6x=a=3, 6* *x, 6x, 6* *a, a+xa, a+x的值为的值为 。 逗号运算又称顺序求值运算。逗号运算又称顺序求值运算。 6 2021年6月28日15时15分工程训练中心 徐国海 include void main( ) int i,j,k; i=1,j=2,k=3; printf(“%d%d%dn”,i,j,k); include void main( ) int i,j,k; i=1; j=2; k=3; printf(“%d%d%dn”,i,j
30、,k); 并不是任何地方出现的逗号都是逗号运算符,并不是任何地方出现的逗号都是逗号运算符,例如:例如: printf(“%d%d%dn”,i,j,k); (是参数分隔符)是参数分隔符) 如果写成:如果写成: printf(“%d%d%dn”,(i,j,k),j,k); 相当于:相当于: printf(“%d%d%dn”, k,j,k); 2021年6月28日15时15分工程训练中心 徐国海 求字节数运算求字节数运算 运算符运算符: sizeof(数据类型标识符数据类型标识符) 或或 sizeof(表达式表达式) 求字节数运算是单目运算求字节数运算是单目运算, 操作数可以是类型名操作数可以是类型
31、名, 也可以是变量、也可以是变量、 表达式表达式, 用以求得相应类型或数据所占的字节数。用以求得相应类型或数据所占的字节数。 此运算的优先级与取地址运算优先级相同。此运算的优先级与取地址运算优先级相同。 例如:例如: sizeof(float) 值为值为4,单精度类型占,单精度类型占4个字节个字节 sizeof(2*3) 值为值为2,算术表达式,算术表达式2*3是是int型型 2021年6月28日15时15分工程训练中心 徐国海 数据的类型转换数据的类型转换 一、系统自动进行的类型转化一、系统自动进行的类型转化 由系统自动完成类型转换由系统自动完成类型转换, 转换的规则如下:转换的规则如下:
32、int unsigned long double short,char float 纵向箭头方向纵向箭头方向表示必定要进行的转换表示必定要进行的转换, short型、型、 char型数据必定先转换型数据必定先转换 成成int型型, float型数据必定先转换成型数据必定先转换成double型型, 再进行运算。再进行运算。 横向箭头方向横向箭头方向表示类型自动转换的方向表示类型自动转换的方向。由低向高转换。由低向高转换, int型最低型最低, double型最高。型最高。 2021年6月28日15时15分工程训练中心 徐国海 二、赋值时的类型转换二、赋值时的类型转换 (1)将实型数据赋给整型变量时将实型数据赋给整型变量时, 舍弃实数的小数部分。舍弃实数的小数部分。 如:如: int i; i=1.23; /*结果结果i 的值为的值为1*/ (2) 将整型数据赋给单、双精度型变量时将整型数据赋给单、双精度型变量时, 数值大小不变数值大小不变, 但以浮但以浮 点形式存储到变点形式存储到变量中。量中。 (3) 将字符型数据赋给整型变量时将字符型数据赋给整型变量时, 由于字符数据只占一个字节由于字符数据只占一个字节, 而整型变量为两个字节而整型变量为两个字节, 将字符的数据放整型变量的低将字符的数据放整型变量的低8位位, 而对而对 整型变量的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烟台市人民医院风湿病相关肺动脉高压筛查考核
- 济南市人民医院新技术学习能力考核
- 不可抗力合同
- 2022年硅湖职业技术学院单招职业技能测试题库附答案详解
- 河北河北2025年设备监理师职业资格考试(设备监理基础知识和相关法规)综合练习题及答案
- 2025年中国餐饮业职业经理人(CMEP)高级资格证书考试练习题及答案二
- 执业药师继续教育考试答案-儿科常用中成药的合理使用-消化系统
- 房屋代理合同
- 产教融合合同
- 名师学案配套试卷及答案
- 二十届四中全会测试题及参考答案
- 2025年中国RWS行业调研报告
- 2025年入团考试测试题目及答案
- 2025年入团积极分子题库及答案(完整版)
- 2025江西吉安市低空经济发展促进中心选调工作人员7人考试参考试题及答案解析
- 华润燃气管理能力测评题库及答案详解
- 2025年三支一扶计划考试笔试试题(含答案)
- 2025年肿瘤放射治疗学科综合知识测试答案及解析
- 中小学科学读书分享
- 2025年农村教学考试题及答案
- GB/T 3920-2024纺织品色牢度试验耐摩擦色牢度
评论
0/150
提交评论