版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基本数据类型与运算符第一页,共六十三页,编辑于2023年,星期五2.1数据类型和取值范围2.1.1数据类型和取值范围
1.类型修饰长度修饰:short,long符号修饰:signed,unsigned2.取值范围与机器类型、编译环境有关.如:int在16位系统中为2字节,取值范围为
10000000,00000000~011111111,11111111
即-215~215-1(-32768~32767)不带符号的int在16位系统中取值范围为 00000000,00000000~11111111,11111111
即0~216-1(0~65535)第二页,共六十三页,编辑于2023年,星期五int在32位系统中为4字节,取值范围为10000000,00000000,00000000,00000000~ 011111111,11111111,11111111,11111111
即-231~231-1不带符号的int在32位系统中取值范围为
00000000,00000000,00000000,00000000~ 111111111,11111111,11111111,11111111
即0~232-1.不同数据类型取值范围见表2-1。第三页,共六十三页,编辑于2023年,星期五类型别名长度范围精度charsignedchar1-27~27-1unsignedchar0~28-1intlongint4-231~231-1signedintsignedlongintunsignedintunsigned0~232-1unsignedlongintshortshortint2-215~215-1signedshortsignedshortintunsignedshortunsignedshortint0~216-1float410-37~10386double810-307~1030815第四页,共六十三页,编辑于2023年,星期五常量:是指在程序运行过程中数值不发生变化的量,如:5,'a',"Hello,world";变量:是指程序运行过程中,可以发生变化的量,如:a,Hello等。2.变量的定义定义格式为:[存储类型]数据类型变量名;如:
inta,a5,_a; float_a5,A5;变量类型可以是表2.1中的任何数据类型。第五页,共六十三页,编辑于2023年,星期五变量命名遵守C标识符命名规则:(1)第1个字符必须是字母或下划线;(2)其余字符可以是字母、下划线、数字;(3)标识符有长度限制,如
C规定标识符长度不能超过32个字符;(4)字母区分大小写;(5)用户自定义标识符不能与C语言的保留字或预定义标识符同名,并应尽量做到“见名知意”,以增加程序的可读性。C语言保留字请参见附录2,预定义标符指预定义库函数。
变量没有赋初值时,变量中存放的是一随机值。变量定义时可同时赋初值,称之为变量的初始化,如:inta=1,a5=10;第六页,共六十三页,编辑于2023年,星期五定义变量包括两个方面的含义:一是给变量分配了存储空间和规定了变量的取值范围;二是规定了其允许的操作,如实数可进行加减乘除运算,但不能进行求余运算。第七页,共六十三页,编辑于2023年,星期五2.1.2整型常量1。整型常量按进制划分有:十进制、八进制(前缀为数字0)、十六进制(前缀为数字0X或0x)三种。数据377按这三种进制的格式可分别表示为:377、0571、0x179(或0X179)。2。常量按长度划分为两种:短整型和长整型(后缀为小写字母l或大写字母L),其中默认为短整型。如-377是一个短整型数,而-377l或-377L表示-377是长整型数。3。长度和进制可进行组合如:377L、0571L、0x179L分别表示十进制、八进制、十六进制长整型数。第八页,共六十三页,编辑于2023年,星期五2.1.3实型常量实型常量有两种表示方法:一类是标准计数方法,如PI值表示为3.1415926另一类可以采用科学计数法,科学计数法的一般形式为:
尾数E阶码
或
尾数e阶码如PI值可以表示为如下形式:3.14159E0 3.14159e0 0.314159E1 31.4159e-1。第九页,共六十三页,编辑于2023年,星期五2.1.4字符常量字符常量用一对单引号包围如’5’、’a’、’A’、‘’等每个字符占一个字节,在计算机中,字符按ASII值存放,见附录1,对应的3个字符ASCII值为53、97、65、32等,因此字符也可以参加整型运算。由于字符用单引号包围,单引号字符不好表示,在C中这些不好表示的字符可在字符前面加反斜杠\区分,称之为转义字符,如’\’’表示单引号。常用转义字符见表2.2。第十页,共六十三页,编辑于2023年,星期五表2.2常用转义字符表码意义ASCII码意义ASCII\b退格8\’单引号39\f换页12\\反斜杠92\n新行10\v直制表11\r回车13\a响铃7\t水平制表9\?问号63\”双引号34%%%百分号37第十一页,共六十三页,编辑于2023年,星期五字符也可用八进进或十六进制形式表示:
八进制
\ooo
十六进制
\xhh如:\101、\x41均表示大写字母A。注意‘3’与3的区别:前者为字符常量,占一个字节,后者为整型常量,占两个字节;前者数值为51,后者为3;两个数据都可以参加四则运算。第十二页,共六十三页,编辑于2023年,星期五例2.1转义字符与字符运算举例,分析下列程序运行结果#include<stdio.h>main(){ charc=’a’; c=c+1; printf(“\n%c\n”,c); printf(“ThetokenofRMBis:\n\t\t\tY\b=”}在打印机上的输出结果为:bThetokenofRMBis: ¥在屏幕上的输出结果为:bThetokenofRMBis: =第十三页,共六十三页,编辑于2023年,星期五
2.1.5字符串类型字符串常量是用一对双引号包围的字符数组,如:”Hello,world!”,在内存中是按照每个字符的ASCII码连续存放的,并在结尾处添加了一结束标志‘\0’,对应的ASCII值为0,这样n个字符组成的字符串需占用n+1个字节。12个字符组成字符串”Hello,world!”在内存中占用13个字节,其存储形式如图2.1示。(a)十进制存储表示(b)ASCII码存储形式图2.1字符串“Hello,world!”存储表示7210110810811139119111114108100330DC00DC01DC02DC03DC04DC05DC06DC07DC08DC09DC0ADC0BDC0C‘H’‘e’‘l’‘l’‘o’‘,’‘w’‘o’‘r’‘l’'d''!'‘\0’DC00DC01DC02DC03DC04DC05DC06DC07DC08DC09DC0ADC0BDC0C第十四页,共六十三页,编辑于2023年,星期五值得注意的是:(1)字符串中包含有双引号时字符时,字符双引号必须用转义字符表示(2)一个字符串需占用两行时,需采用两对双引号分别连续表示,参看下列。例2.2字符串常量分两行表示的实例。#include<stdio.h>main(){ printf(“Isay:\n” “\“Hello,worl\x64!\””);}程序运行结果如下:Isay:“Hello,world!”第十五页,共六十三页,编辑于2023年,星期五注意‘A’与“A”的区别:前者为字符常量,占一个字节;后者为字符串常量,占两个字节,其中第一个字节存放字符‘A’,第二个字节存放字符串结束标志‘\0’。
小结1.数据类型与取值范围2.定义变量的含义3.字符与字符串的表示4.字符’3’与3、’A’与”A”的区别第十六页,共六十三页,编辑于2023年,星期五2.2运算符2.2.1优先级与结合规则1。运算优先级优先级别:不同级别时,先算优先级别高的运算符;结合规则:在同一级别运算时,按某种运算规则进行;优先级别和结合规则见表2.32。单元运算、双元运算、三元运算双元运算:只允许带左右两个运算数的运算符称为二元运算符(或二目运算符、双元运算符),如算术运算。单元运算:只允许有一个运算数的称为单元运算符(或单目运算符、一元运算符),如负号运算符(-)。三元运算符,即条件运算符,它允许带三个运算数。第十七页,共六十三页,编辑于2023年,星期五优先级运算符结合规则1()[]->.2!~++--
-*&sizeof(type)从右至左3*/%4+-5<<>>6<<=>=>7==!=8&9^10|11&&12||13?:从右至左14=+=-=*=/=%=&=^=|=>>=<<=从右至左15,第十八页,共六十三页,编辑于2023年,星期五3。运算规则(1)不同级别的运算符按运算符的优先级别确定计算顺序,优先级别高(优先级别数小)的运算符先计算,优先级别低(优先级别数大)的运算符后计算。(2)相同级别的运算顺序按结合规则确定计算顺序。如表达式3+4*(12-6)/(1+2)的计算顺序为:①左边括号运算(12-6),值为6,②右边括号运算(1+2),值为3,③左边乘法运算4*6,值为24,④右边除法运算24/3,值为8,⑤加法运算3+8,值为11。第十九页,共六十三页,编辑于2023年,星期五2.2.2赋值运算与连续赋值一般形式为
变量=表达式其功能是将一个表达式的值赋给变量。如下表达式
a=b+c其本意是改写变量a的值。注意:与数学上的关系运算符——等于运算符的区别:如数学上,表达式
a=a+5看作错误的表达式在C语言中这是正确的合法表达式。赋值运算符的级别14级,右结合规则。表达式
x=y=z=1是连续赋值表达式,相当于如下表达式
x=(y=(z=1))第二十页,共六十三页,编辑于2023年,星期五2.2.3算术运算++、--1。算术运算符算术运算符有:加“+”、减“-”、乘“*”、除“/”、求余(模)“%”、“++”、“--”等。其中+、-运算符级别为4级,*、/、%运算符级别为3级,它们都满足左结合性,都是二元运算符,+、-、*、/都能对整数或实数进行运算。求余运算符%只能对整型数据进行,如5%2的值为1,5%3值为2。如果计算:a%b
时,a、b中至少有一个为负数,此时运算结果如何呢?C语言中规定,其结果:余数与a的符号相同,而绝对值不变。因此表达式7%3、7%-3、-7%3、-7%-3的值分别为1、1、-1、-1。
第二十一页,共六十三页,编辑于2023年,星期五2。自加++、自减运算符--一元运算符,级别为2级,满足右结合性,整型变量。表达式++a或a++表示a的值自增1,而--a或a--表示a的值自减1。例如若有定义:inta=5;则执行
a++或
++a后,a的值为6;执行
a--或
--a后a的值为4。第二十二页,共六十三页,编辑于2023年,星期五3。前缀运算、后缀运算写在变量的前面称为前缀(或前置)运算符,写在变量的后面称为后缀(或后置)运算符。前缀运算与后缀运算时,注意如下两点:(1)++a与a++单独构成表达式时,两者使用时没有区别。(2)++a与a++不是单独构成表达式时,前缀运算表示先加后用,后缀运算表示先用后加。先用后加指的是先读取a的数据使用,当表达式中比逗号运算符高的运算符都执行完后,a再进行自加运算。先加后用指的是先对a进行自加运算,然后再读取a进行其它运算。上面我们仅以++为例进行说明,对于--运算也有相似的规则:前缀表示先减后用,后缀表示先用后减。第二十三页,共六十三页,编辑于2023年,星期五例2.3分析下列程序运行结果#include
<stdio.h>main(){ inta,b; a=3;b=a++;printf(“a=%db=%d\n”,a,b); a=3;b=++a;printf(“a=%db=%d\n”,a,b); a=3;b=++a*++a;printf(“a=%db=%d\n”,a,b); a=3;b=++a*a++;printf(“a=%db=%d\n”,a,b); a=3;b=a++*++a;printf(“a=%db=%d\n”,a,b); a=3;b=a++*a++;printf(“a=%db=%d\n”,a,b); a=3;printf(“++a=%da++=%d\n”,++a,a++);}运行结果为a=4b=3a=4b=4a=5b=25a=5b=16a=5b=16a=5b=9++a=5a++=3第二十四页,共六十三页,编辑于2023年,星期五2.2.4关系运算比较大小运算,有:>、>=、<、<=、==、!=,
结合规则都是自左向右的。其中>、>=、<、<=等运算符级别为6级,它们比==、!=等两个运算符级别为7级的要高。结果为逻辑真或逻辑假,关系成立时为逻辑真(值为1),关系不成立时为逻辑假(值为0)。如下表达式5>3 5>=3 5<3 5<=3 5==3 5!=3的逻辑值分别为1 1 0 0 0 1注:关系运算符与赋值运算符的区别关系运算的等于运算符==与数学上的等于运算符=具有相同的含义,与C语言中的赋值运算符=是完全不同的,这一点对初学者而言往往容易搞错。
第二十五页,共六十三页,编辑于2023年,星期五2.2.5逻辑运算、连续比较和逻辑优化1。逻辑运算符有:逻辑与&&(11级、左结合)、逻辑或||(12级、左结合)、逻辑非!(2级、右结合)。逻辑与表达式a&&b表示a与b中只要有一个条件不满足(值为0),其运算结果为0,逻辑乘。逻辑或表达式a||b表示a与b中只要有一个条件满足(值为1),其运算结果为1,逻辑加。逻辑非表达式!a,当a为1时,结果为0,当a为0时,结果为1。逻辑真值表见表2.4。表2.4逻辑运算真值表aba&&ba||b!a11110100100101100001第二十六页,共六十三页,编辑于2023年,星期五2。连续比较数学上
5>3>2在是恒成立的。但在C语言中,上式却不成立。若将上式改写为条件表达式
5>3&&3>2后,则与数学上的的连续比较含意相符,表达式也是成立的。3。逻辑优化逻辑与优化:从逻辑与运算a&&b的真值表中,我们可以看出,只要a值为0,不管b值如何,其运算结果都为0,因此,在进行逻辑与运算时,只要计算a值为0,我们不需计算b值,这种情况,我们称之为逻辑与优化。逻辑或优化:同样,对于逻辑或运算a||b,只要a值为1,不需计算b值,此时表达式值恒为1,这种情况称之为逻辑或优化。
第二十七页,共六十三页,编辑于2023年,星期五程序运行结果为
x=1y=0z=0
x=1y=1z=0
x=1y=1z=1
x=1y=0z=0例2.4逻辑运算#include<stdio.h>main(){ intx,y,z; x=y=z=0;++x||++y||++z; printf(“x=%dy=%dz=%d\n”,x,y,z); x=y=z=0;++x&&++y||++z; printf(“x=%dy=%dz=%d\n”,x,y,z); x=y=z=0;++x&&++y&&++z; printf(“x=%dy=%dz=%d\n”,x,y,z); x=y=z=0;++x||++y&&++z; printf(“x=%dy=%dz=%d\n”,x,y,z);}第二十八页,共六十三页,编辑于2023年,星期五2.2.6位运算1.位运算操作符位运算符有:&、|、^、~、>>、<<等6个,其含义见表2.5。算符符号名例子意义级别结合规则&位与a&ba与b按位求与8左|位或a^ba与b按位求异或9左^位异或a|ba与b按位求或10左~位反~a对a按位求反2右>>右移位a>>ba向右移b位5左<<左移位a<<ba向左移b位5左第二十九页,共六十三页,编辑于2023年,星期五2.异或运算异或运算真值表见表2.6,即对应位相同时为0,不同时为1。
表2.6异或运算真值表
aba^b1101010110003.移位运算左移位运算a<<b表示将a左移b位,右边空出低位部分用0填补,左边移出部分将丢弃。右移位运a>>b,右边移出部分将丢弃,左边空出高位部分填补方法根据a是否为带符号数分为两种:a为带符号数,左边空出高位部分用符号位填补;a为不带符号数,高位部分用0填补。
第三十页,共六十三页,编辑于2023年,星期五例2.5位运算main(){ chara=-25,b=93,c; unsignedchard=-25; c=a&b;printf(“%d\n”,c); c=a|b;printf(“%d\n”,c); c=a^b;printf(“%d\n”,c); c=~a;printf(“%d\n”,c);
b=3; c=a>>b;printf(“%d\n”,c); c=d>>b;printf(“%d\n”,c); a=25; c=a>>b;printf(“%d\n”,c);
c=a<<b;printf(“%d\n”,c);}结果:69-1-7024-4283-56^:10111010~:00011000>>:11111100a:11100111b:01011101&01000101|:11111111d:11100111>>:00011100a:00011001>>:00000011<<:11001000第三十一页,共六十三页,编辑于2023年,星期五2.2.7条件运算?:唯一的三元运算符,用符号?:表示,有三个操作数,优先级为13级,结合规则为右结合,其书写一般形式为
a?b:c其计算方法是先计算a,若a非0,则选择b作为表达式值,否则若a为0,则选择c作为表达式值,条件运算又称为三项条件运算或选择运算。例2.6条件运算——输入两个整数,选择其中较大的数输出#include<stdio.h>main(){ inta,b,c; scanf(“%d%d”,&a,&b); c=a>b?a:b; printf(“%d”,c);}程序运行结果为:35↙(箭头表示从键盘输入)5第三十二页,共六十三页,编辑于2023年,星期五2.2.8复合赋值运算同赋值运算一样,也是二元运算符,14级,右结合。含义见表2.7。表达式:a/=b+c*d相当于表达式a=a/(b+c*d)表2.7复合赋值运算符
运算举例意义运算举例意义+=a+=ba=a+b&=a&=ba=a&b-=a-=ba=a-b^=a^=ba=a^b*=a*=ba=a*b|=a|=ba=a|b/=a/=ba=a/b>>=a>>=ba=a>>b%=a%=ba=a%b<<=a<<=ba=a<<b第三十三页,共六十三页,编辑于2023年,星期五2.2.9逗号运算,15级,左结合。其一般形式如下:
e1,e2,e3,……,en其功能为先计算表达式e1,然后计算表达式e2,再计算表达式e3,……,最后计算表达式en,其中表达式en的值为整个表达式的值。例2.7逗号表达式#include
<stdio.h>main(){ inta=5,b=3,c,d; d=(c=a++,c++,b*=a*c,b/=a*c); printf(“%d\n”,d); printf(“a=%db=%dc=%d\n”,a,b,c);}输出结果为3a=6b=3c=6第三十四页,共六十三页,编辑于2023年,星期五2.2.10其它运算sizeof计算变量或表达式占用的存储空间大小,即字节数,2级,右结合。sizeof计算类型占用字节数的形式为
sizeof(类型)sizeof计算变量占用字节数的形式有两种
sizeof(变量)
或
sizeof变量如有
inta,b;则
sizeof(int) sizeofa sizeof(a)都是合法的表达式,其值都为4。第三十五页,共六十三页,编辑于2023年,星期五2.2.11类型转换与类型转换规则1.算术运算类型转换算术运算中,当两个运算数类型相同时,运算结果类型与原类型相同,当两个运算数类型不同时,运算结果类型为级别较高的数据类型。类型级别高低按下述规则进行:低 高char
int longfloatdoubleunsigned signed因此表达式:
5/2+3*4.5+2的运算结果为17.5,而不是18.第三十六页,共六十三页,编辑于2023年,星期五表达式改写为:
5/2.0+3*4.5+2此时,其运算结果为18.0,而不是17.5,请读者自行分析
第三十七页,共六十三页,编辑于2023年,星期五2.赋值转换执行赋值运算
变量a=表达式b时,若a、b类型相同,则直接将b赋给a即可,若a、b类型不同,则需先将b的类型转换为a的类型后再赋值,这种类型转换,我们称之为赋值类型转换。赋值类型转换分为如下几种情况:
第三十八页,共六十三页,编辑于2023年,星期五(1)不带符号整型数向带符号整型数转换最高位为1时,当作符号位即负号来处理。如
unsignedshorta=65535; shortb; b=a;此时b的值为多少呢?将a赋给b后,b的存储形式与a相同,但最高位是符号位,表示b为负数,即b值为-1(补码)。
1111111111111111第三十九页,共六十三页,编辑于2023年,星期五(2)带符号整型数向不带符号整型转换带符号的整型数向不带符号整型转换时,此时将最高位(符号位)也作为数值进行处理,因此若有:
unsignedshorta;shortb=-1; a=b;因为此时b占两字节,二进制补码形式为16个1,赋给a后,a的16个位也都为1,因此a的值为655351111111111111111第四十页,共六十三页,编辑于2023年,星期五(3)短型向长型转换对于短整型向长整型转换时,扩展位部分补符号位。对于浮点型向双精度型转换时,不丢失精度。例2.8符号位的扩展#include<stdio.h>main(){ shorta=-1;longb;unsignedlongc; b=a; c=a; printf("a=%db=%ldc=%lu\n",a,b,c);}程序运行结果为a=-1b=-1c=4294967295111111111111111111111111111111111111111111111111第四十一页,共六十三页,编辑于2023年,星期五(4)长型向短型转换长整型数据占4个字节,短整型数据只占2个字节,数据取值范围小,长整型数据赋给短整型数据转换时,只保留长整型数据的低16位部分,可能会引起数据的丢失。例2.9长型数据向短型数据转换#include
<stdio.h>main(){ longa=65537;shortb; b=a; printf("a=%ldb=%d\n",a,b);}程序输出结果为a=65537b=1000000010000000000000001000000000000000000000001ab图2.2长整型赋给短整型第四十二页,共六十三页,编辑于2023年,星期五(5)浮点型向双精度型转换-----等值转换。(6)双精度型向浮点型转换由于双精度数据精度为16位,浮点型数据精度为7位,超过精度范围的部分将按四舍五入处理,超出浮点型数据范围的部分将引起溢出错误。例2.10双精度数据转换为浮点型数据#include
<stdio.h>main(){ doublea=1.234567890123456789e18; floatb=a; printf("b=%.20le\n",a);printf("b=%.20le\n",b);}
如果双精度数据范围超过浮点型数据取值范围1038,将引起数据的丢失,产生错误的输出结果。程序输出结果a=1.2345789012345780000e18b=1.2345683955060940000e18第四十三页,共六十三页,编辑于2023年,星期五3.强制类型转换强制类型转换的一般格式为:
(目标类型)表达式其功能是将表达式类型转换为目标类型,其转换方法同赋值转换。如:
floata=3.8; inti; i=(int)a;则i的值为3。4.输入/输出类型转换输入/输出类型转换,我们将在下一节输入输出函数中讲述。第四十四页,共六十三页,编辑于2023年,星期五复习1.优先级与结合规则2.自加运算中的前置与后置的区别3.逻辑运算4.位运算5.条件运算6.类型转换2.3输入输出函数
第四十五页,共六十三页,编辑于2023年,星期五2.3.1格式化输出函数printfprintf(“格式字符串”,表达式1,表达式2,……,表达式n);其中格式字符串由两类项目组成:第一类是显示到屏幕上的字符,第二类是对应每个输出表达式的格式说明符(formatspecifier)。格式说明符以%开始,以类型代码结束,其一般格式为:
%[flags][width].[precision][F|N|h|l]type1.类型代码(type)类型代码type意义如表2.8所示。
例2.11先初始化不同类型数据,然后输出数据。#include
<stdio.h>第四十六页,共六十三页,编辑于2023年,星期五表2.8
type类型代码表
type意义type意义c字符s字符串d带符号10进制整u无符10进制整数i带符号10进制整x无符16进制小写xf10进制浮点数X无符16进制大写Xe用e表示指数部分p指针E用E表示指数部分n已输出的字符数ge或f中选择短格%输出%号GE或f中选择短格aC99标准o无符号8进制整AC99标准第四十七页,共六十三页,编辑于2023年,星期五main(){ shorta,b;unsignedc;chard='A'; floatf;doublee; a=3;b=-3;c=-5; f=3.14259;e=12.3e10; printf("Character:ASCIIcoded=%cASCIIvalued=%d\n",d,d); printf("Decimal:a=%db=%dc=%d\n",a,b,c); printf("Unsigned:a=%ub=%uc=%u\n",a,b,c); printf("Octor:a=%ob=%oc=%o\n",a,b,c); printf("Hexdecimal:a=%xb=%xc=%x\n",a,b,c); printf("Hexdecimal:a=%Xb=%Xc=%X\n",a,b,c); printf("formatf:f=%fe=%f\n",f,e); printf("formate:f=%ee=%e\n",f,e); printf("formatg:f=%ge=%g\n",f,e);}第四十八页,共六十三页,编辑于2023年,星期五程序运行结果为Character:ASCIIcoded=AASCIIvalued=65Decimal:a=3b=-3c=-5Unsigned:a=3b=65533c=65531Octor:a=3b=177775c=177773Hexdecimal:a=3b=fffdc=fffbHexdecimal:a=3b=FFFDc=FFFBformatf:f=3.142590e=123000000000.000000formate:f=3.14259e+00e=1.23000e+11formatg:f=3.14259e=1.23e+11第三行:由于b为-3,补码为1111111111111101,无符号数为65533(216==65536==65533+3);c为-5,补码为1111111111111011,无符号数为65531(216==65536==65531+5)。值得注意的是八进制、十六进制形式是不带符号的。十六进制形式输出有大写%X和小写%x两种形式。
第四十九页,共六十三页,编辑于2023年,星期五2.宽度(width)宽度n:表达式输出时至少占用n位。宽度0n时,其中的数字0表示左边空位用0填补。3.精度(precision)对于不同类型的输出表达式,精度表示不同的含义。说明符%e、%E、%f作用于浮点数,精度表示小数点后最多显示的位数,如果未指定精度,精度默认值为6。如%10.4f显示的数据至少占10位,其中小数至多4位。当精度作用于%g或%G时,指的是有效位数目。当精度作用于字符串时,精度符限制最大字符串位数。如%5.7s显示的字符串至少占5位,最多占7位(超长部分截除)。作用于整数时,精度决定必须显示的最小位数,不足时补前导0。第五十页,共六十三页,编辑于2023年,星期五例2.12数据精度#include
<stdio.h>main(){ printf("%.4f\n",123.1234567); printf("%3.8d\n",1234); printf("%10.15s\n","Thisisasimpletest");}程序运行结果为123.123500001234Thisisasimpl第五十一页,共六十三页,编辑于2023年,星期五4.标志(flags)对齐标志flags为-时,表示左对齐;为+(默认)时,表示右对齐;为0或0+时,左边空位用0填补;为0-时,此时0被忽略;为#时,若为o、X、x格式,则在输出项前显示0、0X、0x,若为E、e、F、f、G、g,则每个输出项都带小数点。5.处理其它类型的修饰说明符(F|N|h|l)h、l(小写字母)可用于修饰%d、%o、%u、%x,h修饰时表示输出短整数,l修饰时表示输出长整数。l可修饰%e、%f、%g,表示输出double(C99标准)。
第五十二页,共六十三页,编辑于2023年,星期五2.3.2格式化输入函数scanfscanf函数使用的格式为
scanf(“格式字符串”,地址项1,地址项2,……,地址项n);格式字符串由两类项目组成:指定数据分隔字符,格式说明符(formatspecifier)。格式说明符数量必须与输入数据地址项数量严格一致,且按从左到右的方式依次匹配。变量地址项为变量名前加&,如&x、&y、&a等。格式说明符的一般格式如下
%[*][width][h|l]type其每个项的含义与printf基本相同,不同的是输入格式串没有精度项,其中*用于跳读输入的数据项。第五十三页,共六十三页,编辑于2023年,星期五例2.13计算圆柱体体积。#include
<stdio.h>main(){ intr,h; floatv; scanf("%d%*d%d",&r,&h); v=3.14159*r*r*h; printf("Thevolumeis:%.5f\n",v);}程序运行结果为:354↙(箭头表示前面的数从键盘输入)Thevolumeis:113.09724r=3h=4v=113.09724第五十四页,共六十三页,编辑于2023年,星期五数据流的分隔方式1.(隐含方式)用空白符号分隔数据流分隔数据流的空白符可以为空格(Space)、制表符(Tab)、回车符(Enter)等。如上面程序的数据输入可以为:3↙5↙4↙注意:若输入的下一数据项为字符时,不能采用空白符分隔,因为空白符会被当作有效的输入字符,此时可采用其它数据流分隔方式进行。第五十五页,共六十三页,编辑于2023年,星期五2.指定数据输入宽度分隔数据流
width用于指定每个输入数据项的最大宽度。实际输入数据的宽度可以小于指定的宽度width,此时可采用空白符方式或其它方式分隔数据流。如上面程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024秋九年级历史上册 第三单元 近代社会的发展与终结 第16课 武士领导的社会变革教案 北师大版
- 2024年秋八年级物理上册 第六章 第1节 质量教案 (新版)新人教版
- 六年级信息技术下册 第18课直面自然灾害说课稿 冀教版
- 2024年专利权许可使用合同标的详细描述与属性合同
- 2024婚介平台服务合同模板:高端会员配对与成功促成婚姻服务承诺
- 本科计算机课程设计
- 2024年共享出行公司与车辆制造商之间的车辆采购与租赁协议
- 环境工程师职称申报工作总结
- 教育培训分期付款合同
- 2024年信息科技产品销售合同
- 《万维网服务大揭秘》课件 2024-2025学年人教版新教材初中信息技术七年级全一册
- 2024年新华社招聘应届毕业生及留学回国人员129人历年高频难、易错点500题模拟试题附带答案详解
- 江苏省南京市秦淮区2023-2024学年八年级上学期期中语文试题及答案
- 2024年个人车位租赁合同参考范文(三篇)
- (完整版)新概念英语第一册单词表(打印版)
- 签申工作准假证明中英文模板
- 员工履历表(标准样本)
- 2024年山东省济南市中考数学真题(含答案)
- 山东省青岛市黄岛区2023-2024学年六年级上学期期中语文试卷
- 二手门市销售合同范本
- 新能源发电技术 课件 第一章-新能源发电概述
评论
0/150
提交评论