c语言-第3章数据类型、运算符与表达式.ppt
第三章 数据类型及格式输出、运算符与表达式,主要内容 C的数据类型 常量与变量 整型数据及格式输出 实型数据及格式输出 字符型数据及格式输出 字符串及格式输出 变量的赋初值 各类数值型数据混合计算 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式,3.1 的数据类型,3.2 常量和变量,一、常量,1.直接常量:是在程序中直接引用的数据。,分为:整型、实型、字符型、字符串 如:3,4.5,S,“china”等,以数据的原形出现!,2.符号常量:,特点:在程序中不能给它赋值。,概念:是用标识符来表示一个常量。,定义形式(定义在函数体之外):,#define 标识符 常量数据,例如:#define PI 3.14159,在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。,如:2*2.3*PI 就等价于 2*2.3*3.14159。习惯上,符号常量用大写字母表示。,define PRICE 30 void main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);,符号常量在其作用域内不能再被赋值。,使用符号常量的好处:(1)含义清楚;(2)一改全改,二、变量,变量是指在程序运行中,其值可以被改变的量。,基本概念:,变量代表计算机内存中的某一存储空间,该存储空间中存放的数据就是变量的值。,在同一程序块中,每个变量都有唯一的名字,不能被重复定义。,int a,b,c;float x,y;char c1,c2;或 int c1,c2;,自己设定,满足标识符的规定。,如:int,float,char,“;”不可省,定义形式:,类型标识符 变量名1,变量名2,变量名3,.;,例如:,注意事项:(1)变量必须先定义后使用(2)每个变量必须被指定为一种类型(3)一般习惯上用小写字母表示变量,用大写字母表示符号常量,以示区别。(仅是习惯不是规定),三、C语言中的标识符,概念:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。,(1)标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。,定义规则:,如:_1 year month student_name sum0 M.D.Jones$123#a 3b?c a=b,(2)在C语言中,大写字母和小写字母被认为是不同的字符。因此,a和A,I和i,Sum和sum,分别是两个不同的标识符。一般,变量名用小写字母,与人们习惯一致。(3)Turbo C 规定标识符最长为32个字符。,(4)用户自定义的标识符不能与保留字(关键字)同名。,保留字,关键字,概念:就是具有特定含义的标识符,用户不能用来作自定义标识符。,C语言中的关键字较少,由ANSI标准推荐的关键字有32个。,(1)与数据类型有关的(14):char int float double signed unsigned short long void struct union typedef enum sizeof,(3)与程序控制结构有关的(12):do while for if else switch case default goto continue break return见课本P365附录II,(2)与存储类别有关的:auto extern register static,一、整型常量的表示方法整型常量的表示方法:1.十进制整数:123、-76、0 2八进制整数(以0开头):076、-0253 076转换成十进制:7*8+6 3十六制整数(以0 x开头):0 xa、0 x20、0 xf4 0 xf4转换成十进制:15*16+4,3.3 整型数据,(1)整型变量的分类,基本型,以int表示。,长整型,以long int表示,或以long表示。,无符号型,其中无符号型又分为无符号整型和无符号长整型,分别以unsigned int unsigned long表示。默认为有符号型:(signed)int,(signed)long int,二、整型变量,int x;long y;,2000,2001,2002,2005,x,y,内存,内存地址,2003,2004,所有变量必须先定义再使用!,(2)整数在内存中的存放形式整数在内存中以补码表示:一个正数的补码和其原码的形式相同;负数的补码:将该数的绝对值的原码,按位取反再加1。,例如:整数 8 的16位(2字节)编码原码:00000000 00001000反码:00000000 00001000补码:00000000 00001000,例如:整数-8 的16位(2字节)编码原码:10000000 00001000反码:11111111 11110111补码:11111111 11111000,(3)整型变量的定义类型标识符 变量名1,变量名2,变量名3,.;如:int a,b;(指定变量a,b为整型)unsigned int c,d;(指定变量c,d为无符号整型)long e,f;(指定变量e,f为长整型),(5)整型数据的格式输出,例:main()int a,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%dn”,a,b,sum);结果:a=123,b=456,c=579,原样输出,格式符与输出项一一对应,转义字符,(换行),printf函数的一般格式:,printf(格式控制字符串,输出项列表);,必须用英文的双引号括起来。作用是控制输出项的格式和输出一些提示信息。,要输出的表达式。常量、变量、运算符表达式、函数返回值等,每个输出项之间用逗号“,”分隔。,格式控制字符组成:普通字符、转义字符、格式说明。,普通字符按原样输出,主要用于输出提示信息。:,转义字符“”起头的转义字符(输出所表示的字符或实现其功能,见P25表3-1,详后述),格式说明由%和格式字符串组成:%格式字符串。它表示按规定的格式输出数据,与输出项一一对应。:,常用的整型数据的输出格式符:%d:以有符号十进制数形式输出整数。%ld:以有符号十进制数形式输出长整数。%md:以有符号十进制数形式输出整数,至少占m位。如果数据的位数小于m,右对齐,若大于m,则按实际位数输出。,例如:,printf(%dn,100);,printf(%5dn,100);,printf(%d%8d,100,100*100);,C语言的整型数据在内存中的存储形式是【】A)原码 B)补码 C)反码 D)ASCII码以下【】组中的标识符都是合法的C语言用户标识符:A)a_10 B)char C)_int D signed 3ab a#b day a,一、实型常量的表示方法:,十进制形式:由数字和小数点组成;例如:3.4 4.3注意:必须有小数点,指数形式:由“十进制小数”+“e(或E)”+“十进制数整数”三部分组成。,例如:12.5e-6 表示12.510-6,十进制小数(尾数部分),e(或E),十进制数整数(指数部分),3.4 实型数据,注意:e或E的两边必须有数,且其后面必须为整数;,如:6E0.2 e5 6E,二、实型变量(1)实型变量在内存中的存放形式和变量定义 实型数据在内存中是按照规范化的浮点数形式存储的。变量定义:float 变量名;double 变量名;,如:float a,b,c;,double a1,a2;,a,b,c为float型变量名。,a1,a2为double型变量名。,(2)实型变量的分类单精度(float)型双精度(double)型长双精度(long double)型,实例,2000,2003,2004,2011,x,y,内存,内存地址,(3)实型数据的输出举例P47例3.4:main()float a,b;a=1.23e1;b=a+20;printf(%fn,a);printf(%fn,b);,运行结果:12.300000 32.300000,TC默认浮点数据输出6个小数位数,(4)实型数据的输出格式符(P37)%f:按小数形式输出实型数,整数部分全部输出,默认6位小数。%m.nf:按小数形式输出实数,制定保留n位小数,数据总宽度至少为m位,右对齐,超过m位按实际长度输出。例如:printf(“b=%5.2f”,2.3);,二种表现形式:,用单引号括起来的一个字符;,如:A、1、?等。,只能是英文的单引号,3.5 字符型数据一、字符常量,注意:a、a、”a”互不相同,分别为变量、字符常量、字符串常量。9、9、”9”互不相同,分别为整型常量、字符常量、字符串常量。,用单引号括起来的由右斜杠()引导的转义字符,长度为一个字节,其含义不是字符本身,而是转成新的意义。(P25表3-1),如:n 101 x41,在统计字符个数时,只能记为一个字符,转义字符表,字符形式,功能,n,换行,t,横向跳格,b,退格,将当前位置移到前一列,f,、,8进制数表示的ASCII码对应的字符,反斜杠、单引号、双引号,ddd,换页,xhh,16进制数表示的ASCII码对应的字符,一个字符的多种表示方法:,任一字符都可用ddd或xhh表示,其中ddd为该字符的ASCII码八进制形式、hh为该字符的ASCII码十六进制形式 例:A、101、x41均表示A,要避免的错误:,表示单引号:不是 表示双引号:不是表示斜线:不是,转义字符应用举例,printf(n1234nabcdn);,1234abcd,printf(n1234n);,printf(x41n);,1234,A,P25例子3.1,字符的值域:,即字符的取值范围。,ASCII字符表中的所有字符,每个字符型数据在内存中占一个字节,包括可显示字符和非显示字符。,例如:char c;c=A;c=65;c=101;c=x41;c=0101;c=0 x41;,二、字符变量,字符变量用来存放字符常量,注意一个字符变量只能存放一个字符。一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。,变量中可存储一个字符或者一个0255之间的无符号整数。,三、字符数据在内存中的存储形式及使用方法,存储形式:按 ASCII码存储,不是字符本身,其形式与整数的存储形式一样。,使用方法:按字符使用:则使用字符本身。按数值使用:则使用该字符的ASCII码值。,例3.6向字符变量赋以整数 main()char a,b;a=97;b=98;printf(%c,%cn,a,b);printf(%d,%dn,a,b);,运行结果:a,b 97,98,例3.7大小写字母的转换main()char a,b;a=a;b=b;a=a-32;b=b-32;printf(%c,%cn%d,%dn,a,b,a,b);,运行结果:A,B 65,66,四、字符型数据输出格式符c:按字符输出一个字符,但不输出单引号。mc:按字符输出一个字符,占m位,右对齐。,main()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);,a,97a,97,注:C语言允许字符变量参与数值运算,用ASCII码运算;大小写字母ASCII码相差32。,五、字符串常量 字符串常量是用一对双引号括起来的若干字符序列,隐含以0结尾。字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“”(一对紧连的双引号)。,字符串常量和字符常量区别:1)字符常量由单引号括起来,字符串常量由双引号括起来。2)字符常量只能是单个字符,字符串常量则可以含0个或多个字符。3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。,例如:char c1=A;是可以的,但char c1=A;是不合法的。,如:有一个字符串为“CHINA”,则它在内存中的实际存储如下所示:最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。又如:“abtcd”存储长度为6个字节。注意:在源程序中书写字符串常量时,不必加结束字符0,否则画蛇添足。,4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符“0”(ASCII码为0)。这是字符串结束的标志,由系统自动加上。,六、串输出格式符%s:输出一个字符串。%ms:输出一个字符串,至少占m列,右对齐,超过按实际输出。,例4.5main()printf(“%s,%7sn”,”CHINA”,”CHINA”);,CHINA,CHINA,例:printf(“%s”,“CHINA”);printf(“CHINA”);,把“CHINA”当作一个字符串,把“CHINA”当作要原样输出的字符序列,3.6 变量赋初值,在说明变量的同时给变量一个初始值。,变量定义,分配存储空间,变量初始化,分配存储空间的同时存入数据,int a,b;,int a=1,b=2;,不确定,例:看一看,下列的定义哪些是正确的?,int a=5,b=3;,int a=b=c=3;,int a,b,c=3;,应写为:int a=3,b=3,c=3;,/*只有c 赋了初值*/,初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋予初值的,相当于有一个赋值语句。例如:int a=3;相当于:int a;/*指定a为整型变量*/a=3;/*赋值语句,将3赋予a*/,3.7 各类数值型数据间的混合运算,数据类型的级别:,低,高,int,unsigned,long,double,横向的必须先转成纵向类型才能进行运算,运算规律:1)两个同类型数据运算结果为原类型。,282 int 301/2 int 0,2)两个不同类型的数运算时,系统自动将低级类型转换为高级类型,而后进行同类型运算,结果为高级类型。(表示范围大的为高级类型,详细见P54图3.10),3.2/2 结果为double型数据28+a 结果为int型数据32768*32 结果为long int型数据,3)多个数运算时,类型转换要逐步进行。,2/3*6.3结果为?,4.2,0,0.0,3.8 算术运算符与算术表达式,三类算术运算符号:1.基本算术运算符 2.强制类型转换运算符 3.自增、自减运算符要求掌握每一种运算符号的功能、优先级、结合性 P375 附录III,结合性的含义:当某一运算对象两侧的运算符号优先级相同时,按照结合性所规定的方向进行运算。,如a#b#c(#代表某一运算符)若先运算a#b,再将其结果与c运算,称为左结合性:从左至右运算若先运算b#c,再将a与其结果运算,则称右结合性:从右至左运算,一、基本算术运算符,+:加法,-:减法,*:乘法,/:除法,%:取余或模,两个整数相除取整数商3/5=0-5/3=-13./5=0.63/5.=0.6,3%5=3%两侧都应为整型数据2.5%3出错,优先级:(*,/,%)高于(+,-)结合性:自左向右 P375附录III,二、算术表达式,用算术运算符和括符将操作数连接起来的式子。,优先级:,(),*/%,+-,结合性,自左向右,与数学上一致。,三、强制类型转换运算符(类型名)常量(类型名)变量(类型名)表达式功能:将一个常量、变量或表达式转换成所需类型。优先级:属单目运算符,仅低于括号,高于基本算术运算符。结合性:自右向左注意:类型名要用括号括起来,如果要转换表达式的类型,则表达式也要用括号括起来。,例:float(2/3)错误(int)(2.5)%3 值为2(float)5/2 值为2.500000,四、自增与自减运算符(重点和难点),+i,-i,i先自增(减)1,再使用i,i+,i-,先使用i,i再自增(减)1,(1)单独使用时,+i;,等 价,i+;,等 价,i=i+1;,(2)j=+i;,(3)j=i+;,若i的初始值为3,i=4;j=4;,i=4;j=3;,结合性:,自右向左,例:i=2;j=-i+;,分析:(1)+、-、+(正号)、-(取负)是同级运算符,结合方向:自右向左。,(2)-i+等价于-(i+),(3)对于括号内的自增运算,又要先使用i,再使i增加1。,运算结果:i的值为3,j的值为-2。,优先级:属单目运算符,仅低于括号类,高于基本算术运算符。,a=3;printf(“%d”,a+);,运算结果:输出3,a的值为4。,a=3;printf(“%d”,+a);,运算结果:输出4,a的值为4。,a=3;printf(“%d”,(a+)%2*(a+2);,运算结果:输出6,a的值为4。,注意:此时a的值已经修改为4!,例:3-出错-i-即-(i-),非(-i)-a=3;b=-a+;执行后,b的值为-3,a的值为4,切记:只能用于变量,不能用于常量或表达式,3.5 赋值运算符、赋值表达式、赋值语句,赋值运算符:赋值表达式:变量表达式 功能:将“”右侧表达式的值赋给左侧变量的 值,赋值表达式的值是被赋值变量的值。赋值语句:变量表达式 功能:将“”右侧表达式的值赋给左侧变量的值。*所有表达式末尾加“;”后即变为语句,赋值表达式举例:,(1)x=(y=12)/4,y值为12,x值为3,表达式的值为3,(2)x=y=12/4,y值为3,x值为3,表达式的值为3,(3)x=(y=12/4),y值为3,x值为3,表达式的值为3,(4)(x=y)=12/4,该赋值运算符左边不是变量,而是一个表达式,一、赋值运算符赋值运算符:优先级:仅优先于最低级的逗号运算符。结合性:自右向左例:c=b=a=5 c=(b=(a=5),注1)赋值运算符号不等于数学中的“等号”;注2)自增、自减运算实际上也是一个特殊的赋值运算符。,赋值运算过程“变量表达式”过程:计算右侧表达式的值类型转换:若“”两侧变量和表达式的类型不一致,将右侧表达式的值类型转换为左侧变量的类型。将转换好的右侧表达式的值赋给左侧变量。,例:main()float a=-32.89;int i;i=a;printf(“%dn”,i);a=i;printf(“%fn”,a);,32-32.000000,赋值运算小结:存储长度长的数据赋给存储长度短的变量,可能会丢失数据;存储长度短的数据赋给存储长度长的变量,保持数值大小不变;数据赋给存储长度相同的变量,按存储形式原样照赋。,二、复合赋值运算符*=、/=、%=、+=、-=等等 格式:变量 复合赋值运算符 表达式 功能:复合运算符是一个运算符,但功能上,是两个运算符功能的组合。例:a+=b 相当于 a=a+b a*=b+c 相当于 a=a*(b+c)优先级:仅优先于最低的逗号运算符,和“”同级。结合性:自右向左,赋值表达式和赋值语句举例例1:a+=a-=a*a a初值为2,先做:a=a-a*a,4,-2,表达式值为-2(a=-2),再做:a=a+a,-4,表达式值为-4(a=-4),例2:sum=(a=123)+(b=456)赋值语句:等效于a=123;b=456;sum=a+b;结果:a=123,b=456,sum=579*表达式中的变量可用给该变量赋值的表达式代替(应加括号),3.10 逗号运算符和逗号表达式,形式:,逗号表达式1,逗号表达式2,逗号表达式n,功能:,从左至右依次计算各表达式的值,逗号表达式的值是最后一个表达式的值。,优先级:,最低,结合性:,自左至右,例:d=(a=3,b=5,c=a+b,c+2,a+)依次进行逗号表达式中各表达式的运算,整个表达式的值为 计算结束后,a、b、c、d的值分别为,d=(a=3,b=5,c=a+b,c+2,a+),3a=3,5b=5,8c=8,10,3a=4,3,3d=3,3,4,5,8,3,例:(a=3*5,a*4),a+5的值为 a的值为,20,15,(a=3*5,a*4),a+5,15a=15,60,20,20,例:,a b y 逗号表达式 y=a=4,b=5,a+b;y=(a=4,b=5,a+b);y=(a=4,b=5),a+b;y=a=(4,b=5),a+b;,a b y 逗号表达式 y=a=4,b=5,a+b;4 5 4 9 y=(a=4,b=5,a+b);4 5 9 9 y=(a=4,b=5),a+b;4 5 5 9 y=a=(4,b=5),a+b;5 5 5 10,必须用英文的双引号括起来。由普通字符和格式说明字符组成。,由若干个地址组成的列表。变量的地址、字符串的首地址、指针变量等,以逗号“,”间隔。变量地址组成:地址运算符“&”后跟变量名。,3.4 格式输入函数scanfscanf函数调用的一般形式:scanf(“格式控制字符串”,输入项地址列表);,如scanf(“%d,%d”,函数功能:按照格式控制字符串所规定的格式,从键盘上输入数据,依次赋给各个变量。格式控制串由下列2类组成:1.“%”起头的输入项格式符(与输入项一一对应)2.普通字符(原样输入)注:不能用转义字符。,常用格式字符:,scanf和printf的区别:例:int a;printf(“%d”,a);scanf(“%d”,a);int b;printf(“%dn”,b);scanf(“%dn”,double d;printf(“%fn”,d);scanf(“%f”,输出实数时,不论是单精度还是双精度数,都可用%f;输入实数时,单精度数用%f,双精度数用%lf。,用scanf函数注意点例:用scanf函数给整型a、b输入数据,使a=123,b=4561)scanf(“%d,%d”,输入:123456 或 123456或123(按Tab键)456 或123 456如果输入:123,456错误,3)scanf(“a=%d,b=%d”,输入:a=123,b=456 或a=123,b=456 输入数值数据前加一些前导空格、Tab、回车不影响输入。注:非格式字符要原样输入,一般用空格或逗号作为数据间隔符。输入数值数据时,前导空格不计。输入空格时,可以用多个空格、一个或多个Tab、回车代替。,4)scanf(“%d%d”,输入:123 456 或123 456或123(按Tab键)456 或123 456注意:输入多个数值数据时,如果没有设定分隔符,在输入数据时可用空格、回车或Tab键来分隔。C编译在遇到这些符号即认为前一数据结束。,例:char x,y,z;scanf(“%c%c%c”,1)输入:d e f则:x=d,y=,z=e2)输入:def则:x=d,y=e,z=f,例:char x,y,z;scanf(“%c%c”,1)输入:de f则:x=d,y=e,z=n2)输入:def则:x=d,y=e,z=f注:在用“%c”输入字符时,输入任意字符均作为有效字符。,例:输入数据使得a=1,b=2,x=3,y=4int a,b;int x,y;scanf(“%d%d”,输入:1 2 3 4,例:int a;char b;float c;scanf(“%d%c%f”,输入:1234a123o.26则:a=1234,b=a,c=123.0注:在获取输入数据时,如果遇到非法数据,则当前数据到此结束。,3.4.3 字符数据的输入输出 printf函数“%c”格式符 scanf函数“%c”格式符 putchar函数:用于输出一个字符 getchar函数:用于输入一个字符,(1)函数格式int putchar(ch);,(2)函数功能 向标准输出设备(一般为显示器)输出一个字符,并返回输出字符的ASCII码值。,一、putchar函数(字符输出函数),函数返回值类型,函数的名称,函数的参数,参数ch可以是字符常量、字符变量和整型数值表达式。例1:putchar(n);在屏幕上输出一个换行符例2:c=*;putchar(c);在屏幕上输出一个“*”例3:putchar(65)相当于putchar(A)在屏幕上输出字母A,65是A的ASCII码。,putchar函数的说明:注:要调用该函数,在程序前要包含“头文件”(在头文件中包含了putchar函数有关的信息):#include“stdio.h”或#include 否则,会出现错误提示:“undefine sybom _putchar in”,例:#include main()int a=65;char b=B;putchar(a);putchar(65+1);putchar(b);putchar(B+1);,程序运行结果为:ABBC,包含函数putchar的头文件,(1)函数格式int getchar();,(2)函数功能 从标准输入设备(一般为键盘)读入一个字符,返回该字符的ASCII码值。,二、getchar函数(字符输入函数),函数返回值类型,函数的名称,无参数,注意:,程序运行到getchar()时,将返回用户屏幕,等待用户输入一个字符,输入后,才继续向下运行。若用户输入字符后未按回车键,则键入的内容一直保留在键盘缓冲区中,只有用户键入回车键后,字符输入函数getchar才进行处理。,函数getchar将回车键作为一个字符读入。如果程序中有两个以上函数getchar时,应该一次性输入所需字符,最后再按回车键。,也要在程序前包含头文件:#include“stdio.h”或#include,无论输入的是英文字母或标点符号还是数字,都是作为字符输入。,例:#include/*包含头文件*/void main()int a;a=getchar();printf(a=%cna=%dn,a,a);,从键盘输入字符,该字符的ASCII编码值赋给a,程序运行情况如下:1a=1a=49,例:#include main()char c1,c2;c1=getchar();c2=c1+3;printf(“%c%cn”,c1,c2);putchar(c1);putchar(c2);putchar(n);,输入:a,输出:ad ad,顺序结构即按照语句书写顺序执行的程序结构,由两个或两个以上的语句构成,先执行A,再执行B。,顺序结构程序,作业:1.详细叙述c程序运行的步骤。2.书本P66 3.3(1、3、5)、3.63.写出以下程序的运行结果main()int x;x=32770;printf(“%d”,x);,4.写出以下程序的运行结果:main()int i=12345;long j=1234567;float f=12345.67;double d=12345.678956789;char s=“How are you!”;printf(“%10d*%-10ld*n”,i,j);printf(“%10d*%3ld*n”,-i,j);,printf(“%-10u*%10 x*%10X*%10o*%x*n”,999,999,999,999,-999);printf(“%f*,%10.2f*%-10.2f*n”,d,d,d);printf(“%10.0f*%8.5f*n”,f,d);printf(“%s*%15s*%-15s*%8.3s*%-8.3s*n”,s,s,s,s,s);printf(“%8c*%-8c*n”,A,B);,作业:书本P6667 3.9、3.10、3.12(5、6),上机练习:书本P4例1.2,运行并查看结果 修改上题程序,使输出结果为:a=123,b=456,sum=579 再修改程序,使输出如下:a=123 b=456 sum=579,再修改程序,将a、b、sum的类型由int改为float,输出格式符由%d改为%f,运行并观察结果。再修改程序,将%f改为%e,运行并观察结果。2.书本P51例3.73.书本P77例4.3,讲评作业:课本P66 3.9求下面算术表达式的值。(1)x+a%3*(int)(x+y)%2/4 x=2.5,a=7,y=4.7,1,(int)7.2,7,(int)优先级高于算术运算符,*/%优先级相同,结合性:自右向左。,7,1,0,2.5,(2)(float)(a+b)/2+(int)x%(int)y,2.5,(float)5,a=2,b=3,x=3.5,y=2.5,(int)3.5,5.0,3,(int)2.5,2,3%2,1,3.5,3.10写出程序运行结果main()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);,m=9,i=9,n=10,j=11,i=9,j=11,m=9,n=10,9,11,9,10,指导书P16 2.55main()int i=12345;long j=1234567;float f=12345.67;double d=12345.678956789;char s=“How are you!”;printf(“%10d*%-10ld*n”,i,j);printf(“%10d*%3ld*n”,-i,j);printf(“%-10u*%10 x*%10X*%10o*%x*n”,999,999,999,999,-999);,printf(“%f*,%10.2f*%-10.2f*n”,d,d,d);printf(“%10.0f*%8.5f*n”,f,d);printf(“%s*%15s*%-15s*%8.3s*%-8.3s*n”,s,s,s,s,s);printf(“%8c*%-8c*n”,A,B);,int i=12345;long j=1234567;printf(“%10d*%-10ld*n”,i,j);,$12345,1234567$,$12345*1234567$*,以下“$”表示空格,int i=12345;long j=1234567;printf(“%10d*%3ld*n”,-i,j);,$-12345,1234567,$-12345*1234567*,-12345,printf(“%-10u*%10 x*%10X*%10o*%x*n”,999,999,999,999,-999);,999$,$3e7,$3E7,$1747,fc19,999:0000001111100111,-999:,999$*$3e7*$3E7*$1747*fc19*,double d=12345.678956789;printf(“%f*,%10.2f*%-10.2f*n”,d,d,d);,12345.678957,$12345.68,12345.678957*,$12345.68*12345.68$*,12345.68$,float f=12345.67;double d=12345.678956789;printf(“%10.0f*%8.5f*n”,f,d);,$12346,12345.67896,$12346*12345.67896*,char s=“How are you!”;printf(“%s*%15s*%-15s*%8.3s*%-8.3s*n”,s,s,s,s,s);,How are you!,$How are you!,How are you!$,$How,How$,How are you!*$How are you!*How are you!$*$How*How$*,printf(“%8c*%-8c*n”,A,B);,$A,B$,$A*B$*,一、整型常量的表示方法(短)整型常量的表示方法(其值在-32768+32767范围内):1.十进制整数:123、-76、0 2八进制整数(以0开头):076、-0253 076转换成十进制:7*8+6 3十六制整数(以0 x开头):0 xa、0 x20、0 xf4 0 xf4转换成十进制:15*16+4,3.3 整型数据,长整型常量的表示方法(其值在-2147483648-+2147483647范围内):1.数值超过-3276832767,但在-21474836482147483647之间,可直接写成十进制整数形式,如123456789;2数值范围在-3276832767之间,如果要表示成长整型常量,则在十进制整数后加l或L,如123L。,这往往用于函数调用中,如果函数的形参为long int型,则要求实参也为 long int 型,此时用123作实参不行,而要用123L作实参。,