资源描述
下一讲,前一讲课堂练习,1.一个C程序的执行是从_。A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束,2.源程序program.c经编译产生的目标文件和连接后产生的可执行文件是_。A)program.bak和program.objB)program.obj和progam.exeC)program.ext和program.cD)program.bak和program.exe,3.TurboC中完成一次编译和连接的快捷方式是_。A)Alt+F9B)Ctrl+F9C)F9D)Alt+F5,A,B,C,第2章:基本数据类型、运算符与表达式,学习的意义,学习C语言的目的是什么?目的可能是为了:期末考试等级考试研究生考试程序员考试,最终目的是:用C语言编写程序来解决实际问题!,程序是什么?,程序是解决某种问题的一组指令的有序集合。著名计算机科学家沃思(NikiklausWirth)提出一个公式:程序=数据结构+算法,学习的意义,程序是什么?,对数据的描述。在C语言中,体现为数据类型的描述!,对数据处理的描述。是为解决一个问题而采取的方法和步骤,是程序的灵魂!,结论:学好C语言首先就必须十分了解C语言的数据类型、与算符与表达式。,掌握变量和常量的概念;理解各种类型的数据在内存中的存放形式;掌握各种类型数据的常量的使用方法;掌握各种整型、字符型、浮点型变量的定义和引用方法;了解调用printf函数输出各种类型数据的方法;掌握数据类型转换的规则以及强制数据类型转换的方法;掌握赋值运算符、算术运算符、位运算符、逗号运算符以及sizeof的使用方法;理解运算符的优先级和结合性的概念,记住所学的各种运算符的优先级关系和结合性。,学习目标,2.1.1C语言数据类型,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,本章所介绍的数据类型,2.1.2数据在计算机内的存储形式,字符型数据是以ASCII码值存储在计算机中,占用1个字节,例如字符A存放形式:,例如字符E存放形式:,A的ASCII码值65,E的ASCII码值69,整型数据存储在计算机中,占用2个字节,例如9存放形式:,最高位是符号位,其值0表示正数,1表示负数。,例如-9存放形式:,2.1.2数据在计算机内的存储形式,单精度实型数据存储在计算机中,占用4个字节,例如26.7510=(11010.11)2=(-1)025(0.1101011)226.75的存储形式:,S,M,E,3130.870,其中S表示数值的正负号,0表示正,1表示负。M表示规格化的数值,即首位小数不为0。M确定了数值的精度。E用移码表示指数。浮点数的一般表达形式(-1)S2e规格化的尾数E=27+e-27e27,-26.75的存储形式:,2.2常量、变量和标识符1.标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线C语言的关键字不能用作变量名大小写敏感长度:有效长度为32个字符。随系统而异,但至少前8个字符有效命名原则:变量名和函数名中的英文字母一般用小写,以增加可读性见名知意不宜混淆如l与I,o与0,在TC2.0及BC3.1中,变量名(标识符)的有效长度为个字符,缺省值为,但在VC中其长度可达到255,例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123,M.D.John,3days,#33,char,$123,ab,.字符非法,数字3不可作首字符,#字符非法,char是关键字,字符非法,$不可作首字符,2.2常量、变量和标识符2.常量定义:程序运行时其值不能改变的量(即常数)常量的分类:直接常量(值常量或称为字面产量)整型常量:10、15、-10、-30实型常量:12.5、30.0、-1.5字符常量:A、b、c字符串常量:“sum”、“A”、“123”符号常量用标识符来代表常量。其定义格式为:,#define符号常量常量,#defineNUM20#definePI3.1415926,#include#definePRICE30voidmain()intnum,total;num=10;total=num*PRICE;printf(total=%d,total);,运行结果:total=300,2.2常量、变量和标识符3.变量定义:程序运行时其值可以被改变的量变量的两要素:变量名、变量值变量的定义格式:变量的初始化:定义时赋初始值变量的使用:先定义,后赋值变量定义位置:一般放在函数开头,存储类型数据类型变量名1,变量名2,变量名n;,intx,y,z;floatradius,length,area;charch;,决定分配字节数和数的表示范围,合法标识符,例:inta=2,b,c=4;floatdata=3.67;charch=A;intx=1,y=1,z=1;,例1:intstudent;stadent=19;/Undefinedsymbolstatentinfunctionmain,例2:floata,b,c;c=a%b;/Illegaluseoffloatingpointinfunctionmain,2.3简单数据类型与表示范围,1.整型数据,整型常量,十进制整数:由数字09和正负号表示.如:123,-456,0八进制整数:由数字0开头,后跟数字07表示.如:0123,011十六进制整数:由0 x或0X开头,后跟09,af,AF表示.如0 x123,0Xff,定义整数的符号常量#defineNUM120/十进制数20#defineNUM2020/八进制数(十进制16)#defineNUM30 x2a/十六进制数(十进制42),思考题:下列整型常量哪些是非法的?012,oX7A,00,078,0 x5Ac,-0 xFFFF,0034,7B。,首字符不能是字母o,八进制数中不能有数字8,十进制数中不能有字母B,2.整数在内存中的表示,整数的数值在内存中用补码的形式存放。求一个整数补码的方法:(假设用n个二进制位的内存单元来存储它),如果是正整数,采用符号-绝对值表示,即最高有效位(符号位)为0表示正,数的其余部分则表示数的绝对值;如果是负整数,则先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位(最低位)加1;然后将上述求得的补码的低n位存放于内存单元之中,就得到了该整数在内存中的表示,内存单元的最高位是符号位(0表示正,1表示负)。,在TC2.0或BC3.1下,一个整数默认情况下需要2个字节(16位)的内存单元存放;而在VC6.0下,则需要4个字节(32位)。,2.整数在内存中的表示,十进制整数,13:对于16位的内存单元:,符号位,十进制数+13两个字节的内存实际存放形式,(+13)补=0000000000001101,2.整数在内存中的表示,十进制整数,13:对于32位的内存单元:,十进制数+13四个字节的内存实际存放形式,(+13)补=00000000000000000000000000001101,符号位,记住:数据在内存中的存放位置是高位数字放在高地址的存储单元中,低位数字放在低地址的存储单元中。,2.整数在内存中的表示,十进制整数,13:对于16位的内存单元:,符号位,十进制数-13两个字节的内存实际存放形式,(+13)补=0000000000001101,(-13)补=1111111111110011,2.整数在内存中的表示,十进制整数,13:对于32位的内存单元:,十进制数-13四个字节的内存实际存放形式,(+13)补=00000000000000000000000000001101,符号位,(-13)补=11111111111111111111111111110011,2.整数在内存中的表示,十进制整数,65537:对于16位的内存单元:,(+65537)补=010000000000000001,(-65537)补=101111111111111111,十进制数-65537两个字节的内存实际存放形式,符号位,真值为:-1,不是-65537!,2.整数在内存中的表示,十进制整数,65537:对于32位的内存单元:,十进制数-65537四个字节的内存实际存放形式,(+65537)补=00000000000000010000000000000001,符号位,表示负,(-65537)补=11111111111111101111111111111111,真值为:-65537!,为什么-65537这个数在16位内存单元中的表示与在32位内存单元中的表示不相同呢?,这主要是因为-65537这个数超出了16位内存单元表示数的范围,所以实际存储的值(-1)与要表示的值(-65537)不同,但-65537并没有超出了32位内存单元表示数的范围,所以实际存储的值就是其本身。因此,我们在C语言中对数据处理时必须要注意数据的表示范围,以免引起不必要的错误。,2.整数在内存中的表示,八进制整数,034:对于16位的内存单元:034=(011100)2,符号位,八进制数034两个字节的内存实际存放形式,(034)补=0000000000011100,对于32位的内存单元:(034)补=00000000000000000000000000011100,八进制数034四个字节的内存实际存放形式,符号位,2.整数在内存中的表示,八进制整数,034:对于16位的内存单元:,符号位,八进制数-034两个字节的内存实际存放形式,(+034)补=0000000000011100,(-034)补=1111111111100100,对于32位的内存单元:(+034)补=00000000000000000000000000011100,(-034)补=11111111111111111111111111100100,八进制数-034四个字节的内存实际存放形式,符号位,2.整数在内存中的表示,十六进制整数,0X8AB6:对于16位的内存单元:0X8AB6=(1000101010110110)2,符号位表示负,十六进制数0X8AB6两个字节的内存实际存放形式,(0X8AB6)补=01000101010110110,真值为:-30026!,对于32位的内存单元:(0X8AB6)补=00000000000000001000101010110110,十六进制数0X8AB6四个字节的内存实际存放形式,符号位,真值为:+35510!,溢出!,2.整数在内存中的表示,十六进制整数,0X8AB6:对于16位的内存单元:,(+0X8AB6)补=01000101010110110,(-0X8AB6)补=10111010101001010,十六进制数-0X8AB6两个字节的内存实际存放形式,符号位表示正,真值为:+30026!,对于32位的内存单元:(+0X8AB6)补=00000000000000001000101010110110,(-0X8AB6)补=11111111111111110111010101001010,十六进制数-0X8AB6四个字节的内存实际存放形式,符号位表示负,真值为:-35510!,3.整型变量,整型变量的定义,int变量名,变量名2,变量名n;,int必须小写,至少一个空格,必须为合法的标识符,以逗号,分隔,以分号;结尾,定义时可以赋初值,方法:在变量名后面增加“=数值”,例:inta;intx,y,z;intm=2,y=-3;,当程序中定义了一个变量时,计算机会为这个变量分配一个相应大小的内存单元。因此,这个变量是有值的,它的值就是对应内存单元的值。如果定义时没有赋初值,则这个值程序员是无法预知的。,整型变量的分类,修饰符控制变量是否有符号:signed(有符号)和unsigned(无符号)控制整型变量的值域范围:short(短)和long(长)。,有符号基本型(int)inta=-2;/定义一个有符号整型变量a,并赋初值-2占一个机器字大小的内存单元。TC或BC3.1下,变量占2个字节(16位)的内存单元;VC6.0下,变量占4个字节(32位)的内存单元。,如果定义变量时,不指定signed,也不指定unsigned,则默认为signed(有符号),符号位,变量a占用的内存单元(2字节),有符号整型变量在内存中的实际存放形式(假设在BC3.1下),无符号基本型(unsignedint或unsigned),unsignedinta=2;/定义一个无符号整型变量a,并赋初值2或unsigneda=2;占用的内存单元字节数同int类型。与inta=2;等价。,unsignedinta=-2;/定义一个无符号整型变量a,并赋初值-2或unsigneda=-2;,无符号整型变量在内存中的实际存放形式(假设在BC3.1下),数据位,变量a占用的内存单元(2字节),其值为:65534!,注意:对于有符号数也好还是无符号数也好,其实在计算机内存中表示是不加区分的,都是以其补码形式表示,只是我们怎样看待最高二进制位的问题,如果把最高位当成符号位看待,则为有符号数,如果把最高位当成数据位看待,则变为无符号数。例如:unsignedinta=-2;printf(“%d”,a);-有符号输出,则为-2printf(“%u”,a);-无符号输出,则为65534,有符号短整型(shortint或short),shortinta=2;/定义一个有符号短整型变量a,并赋初值2或shorta=2;占用的内存单元为2个字节,无论是TC、BC,还是VC。,无符号短整型(unsignedshortint或unsignedshort),unsignedshortinta=2;/定义一个无符号短整型变量a,并赋初值2或unsignedshorta=2;占用的内存单元字节数同short类型。,在TC2.0和BC3.1下,unsignedshort类型与unsignedint类型是等价的。,有符号长整型(longint或long),longinta=234567;/定义一个有符号长整型变量a,并赋初值234567或longa=234567;占用的内存单元为4个字节,无论是TC、BC,还是VC。,无符号长整型(unsignedlongint或unsignedlong),unsignedlonginta=2;/定义一个无符号长整型变量a,并赋初值2或unsignedlonga=2;占用的内存单元字节数同long类型。,在VC中long与int类型基本相同,均占四个字节的内存单元;但在TC或BC中,long类型与int类型只是所占字节不同外(long占4字节,int占2字节),其它数据处理方法是一样的。,【例】各种整型变量的定义,#include#defineSUM65535voidmain()inta,b=20;unsignedintc=0 xff;longD;a=SUM;D=301;printf(a=%dn,a);printf(b=%dn,b);printf(c=%dn,c);printf(“D=%dn”,D);,/文件包含,头文件说明,/定义符号常量SUM,值为65535,/定义两个int型变量a和b,b赋初值20,/定义无符号整型变量c,并赋初值0 xff,/定义长整型变量D,/对a赋值为SUM,这时a的值是65535,/对D赋值为301,/以有符号十进制形式(%d)显示a的值,/以有符号十进制形式(“%d”)显示b的值,/以有符号十进制形式(%d)显示c的值,/以有符号十进制形式(%d)显示D的值,变量定义部分,语句执行部分,在TC2下运行结果:a=-1b=20c=255D=301,在VC6.0下运行结果:a=65535b=20c=255D=301,对于16位的有符号整型变量a来说,因65535在内存中的形式为1111111111111111,最高位为1表示负,则其所对应的十进制数就为-1。,如果unsignedb=SUM;printf(“b=%u”,b);结果会是?,4.整数常量的分类,根据其值所在范围确定其数据类型。在TC2.0或BC3.1下,如果整型常量的值位于-3276832767之间,C语言认为它是int型常量;如果整型常量的值位于-21474836482147483647之间,C语言认为它是long型常量。整型常量后加字母l或L,认为它是longint型常量。比如123L、45l、0XAFL。无符号数也可用后缀表示,整型常数的无符号数的后缀为U或u。例如:358u,0 x38Au,235Lu均为无符号数。,前缀、后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。其实整型常数这种表示无符号数意义不大,在机器内部它还是用其补码表示,例如-1U和-1在内存中表示是一样的,数据处理也一样,所以有的教科书上说“常量无unsigned类型”,其实有,但无意义。,5.实型数据,实型常量(实数或浮点数),十进制小数形式:由数字09和小数点组成.如:0.0,5.6,-5.指数形式:由十进制数,加阶码标志e或E以及阶码(只能为整数,可以带符号)组成.其一般形式为:aEn其中:a为十进制数,n为十进制整数,都不可缺少。其可表示为a10n,合法的实数表示:2.1E5表示2.1105,3.7E-2表示3.710-2。,非法的实数表示:345(无小数点),E7(阶码标志E之前无数字),-5E(无阶码),50.-E3(负号位置不对),实型变量,单精度实型(float)floatf=3.14,g;这种定义的变量在内存中占4个字节(32位)的存储单元。双精度实型(double)doublex,y;这种定义的变量在内存中占8个字节(64位)的存储单元。长双精度实型(longdouble)longdoublex,y;在TC或BC下,这种定义的变量在内存中占10个字节(80位)的存储单元;在VC下则占8个字节(64位)。,注意:三种实数类型中,其精度是float*/%-+-(2)(3)(4)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据,例:5/2结果-5/2.0结果,例:5%2结果-5%2结果1%10结果5%1结果5.5%2,3.算术运算符、算术表达式,2,-2.5,1,-1,1,0,(),余数的符号与被除数的符号相同,其值的绝对值等于两数绝对值相除所得的余数。,表达式和算术表达式,3.算术运算符、算术表达式,表达式:用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子。算术表达式:表达式中的运算符都是算术运算符的表达式。,运算符优先级(到目前为止),例:3+5*8、(x+y)/2-1等,高,低,自增、自减运算符+-作用:使变量值加1或减1种类:前置+i,-i(先执行i=i+1或i=i-1,再使用i值)后置i+,i-(先使用i值,再执行i=i+1或i=i-1),例:j=3;k=+j;j=3;k=j+;j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,4.自增自减运算符、符号运算符,负号运算符(“-”)减号()既是一个算术运算符,又是一个负号运算符。负号运算符是单目运算符。例如:a=2,那么a的值就是2。负号运算符的优先级比较高,与强制类型转换符是同一个级别。,自增、自减运算符注意事项+和-运算符只能用于变量,不能用于常量和表达式。因为+和-蕴含着赋值操作。例如:5+、-(a+b)都是非法的表达式。负号运算符、+、-和强制类型转换运算符的优先级相同,当这些运算符连用时,按照从右向左的顺序计算,即具有右结合性。两个和之间不能有空格。在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。例如:+i+是非法的。自增、自减运算,常用于循环语句中,使循环控制变量加(或减),以及指针变量中,使指针指向下(或上)一个地址。,4.自增自减运算符、符号运算符,例:intp,i=2,j=3;p=-i+;p=?i=?p=i+j;p=?i=?j=?p=i+-j;p=?i=?j=?p=i+-j;p=?i=?j=?p=i+i+;p=?i=?p=+i+(+i);p=?i=?p=+i+i+;p=?i=?,-2,3,5,3,3,4,2,2,4,3,2,4,4,4,8,4,6,5.算术运算符中数据类型转换规则,#includevoidmain()floata,b,c;a=7/2;/计算7/2得int型值3,因此a的值为3.0b=7/2*1.0;/计算7/2得int型值3,再与1.0相乘,因此b的值为3.0c=1.0*7/2;/先计算1.0*7得double型的结果7.0,然后再计算7.0/2,因此c的值是3.5printf(a=%f,b=%f,c=%f,a,b,c);,a=3.000000,b=3.000000,c=3.500000,6.关系运算符、逻辑运算符、条件运算符,1.关系运算符和关系表达式,关系运算符,关系表达式,用关系运算符连接起来的式子称为关系表达式。关系表达式的一般形式为:表达式关系运算符表达式,例:a+bcdx3/2a+1a+b等价于:ab!=c等价于:a=bc等价于:a2b|c等价于:,c(a+b),(ab)!=c,a=(bc),(a2)b)|c,已知:a=1;b=2;c=3;问:d=a!=c=abc;的值?,答:d的值为1。等价于:d=(a!=c)=(ab)=cb+cbf=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,关系运算注意:,例若a=0;b=0.5;x=0.3;则a78在C中是允许的,值为,0,例inti=1,j=7,a;a=i+(j%4!=0);则a=,2,例a0结果为A100结果为,1,0,例应避免对实数作相等或不等的判断如1.0/3.0*3.0=1.0结果为可改写为:fabs(1.0/3.0*3.0-1.0)y等价于:a=b|x=y等价于:!a|ab等价于:!ab等价于:c=a|b等价于:a|7b=5;!aa,例(a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=ax0,表达式值为axy?1:1.5/xy,值为1.0;x)六种。,左移()实现将某变量所对应的二进制数往左移位,溢出的最高位被丢掉,空出的低位用零填补。其一般格式为:,返回整型值的表达式返回整型值的表达式,例:inta=3;a2:将a所对应的二进制数左移两位,该表达式的值为12。2)右移运算实现将某变量所对应的二进制数往右移位,溢出的最低位被丢掉,如果变量是无符号数,空出的高位用零填补,如果变量是有符号数,空出的高位用原来的符号位填补(即负数填1,正数填0)。其一般格式为:,返回整型值的表达式返回整型值的表达式,例:inta=8;a2:将a所对应的二进制数右移两位,该表达式的值为2。,例:将short类型数据的高、低位字节互换#includevoidmain()shorta=0 xf245,b,c;b=a8;/将a的高8位移到低8位赋值给c,c的值为0 xfff2c=c,a=0 x45f2,7.位运算符、位运算表达式,按位或(|)如果两个数对应的位全为0,对应的结果位值为0,否则,对应的结果位值为1。,按位与(a|b的值等于9。c|d的值等于15,例:inta=8,b=9,c=12,d=3;aa的值等于-9。d的值等于-10,7.位运算符、位运算表达式,位运算之间的优先级ab的值等于1,高,低,8.逗号运算符、逗号表达式,位运算符:,逗号表达式:用逗号连接起来的表达式。其一般形式为:,表达式1,表达式2,表达式k,优先级:优先级最低。结合性:左结合性。即逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值。逗号表达式的值:最后一个表达式的值就是整个逗号表达式的值。用途:常用于循环for语句中。,例如:a+3,b=4,b+,例:a=3*5,a*4a=3*5,a*4,a+5例:x=(a=3,6*3)x=a=3,6*a例:a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,例:#includevoidmain()intx,y=7;floatz=4;x=(y=y+6,y/z);printf(x=%dn,x);,运行结果:x=3,9.sizeof运算符、复合运算符,sizeof运算符功能:获取变量和数据类型所占内存大小(字节数)格式:,sizeof表达式sizeof(数据类型名或表达式),例:sizeof(int)其值为2(在TC2.0或BC3.1下)其值为4(在VC6.0下)sizeof(long)其值是4sizeof10L其值也是4unsignedlonga=2;sizeof(a)其值也是4,复合赋值运算符,种类:+=-=*=/=%=a+=a-=a*a;,/a=-264等价于a=a+(a=a-(a*a),例:inta=2;a%=4-1;a+=a*=a-=a*=3;,/a=0等价于a=a+(a=a*(a=a-(a=a*3),2.5运算符的优先级和结合性,判断表达式0XF0F0floatf;f=x/y;printf(“f=%fn”,f);则程序的输出结果是?,f=1.000000,9.设整型变量x,y,z均为2,表达式(x+)+(y+)+(z+)的值是_。A)6B)7C)8D)910.设inta=3,b=5;floatx=7.5,y=3.5;则表达式(float)a+b/2+(int)x%(int)y;的值是_。11.执行语句:inta;a=1+1.5;后,正确的叙述是_。A)a的值是字符3B)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符1的ASCII码值加上1,A,6.0,D,12.设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是_。A)均为2个字节B)065535C)-3276832767D)-256至25513.执行下列语句后,运行结果为_。main()inti=3,j;j=+i+i+;printf(“%dn”,j);A)6B)7C)8D)9,B,C,14.main()intx=4,y;floatk=4,z;clrscr();printf(%dn,-x*-x*-x);x=4;y=-x*-x*-x;printf(y=%dn,y);z=-k*-k*-k;printf(z=%fn,z);,+x*+x:x为浮点型:从左向右计算。x为整型:在输出函数中,从左向右计算;在输出函数外,先连续减两次,然后乘积。,输出结果:6Y=1Z=6.000000,15.若a为int类型,且其值为5,则执行表达式a+=a-=a*a后,a的值为_。A)-5B)-40C)-15D)不确定16.如果x,y,i和j都是int型变量,则表达式x=(i=1,j=6,y=8)的值为_。,B,8,main()intx=0,z,y=z=-1;x=x-z-y;printf(x=%dn,x);输出结果是:,17.以下各程序的输出结果是:,main()intx=0,z,y=z=-1;x+=z-y;printf(x=%dn,x);输出结果是:,main()intx=0,z,y=z=-1;x=-x-z-y;printf(x=%dn,x);输出结果是:,main()intx=0,z,y=z=-1;/*x*=-y-z-x;*/x=-y-z-x;/*x+=-y-z-x;*/printf(x=%dn,x);输出结果是:,main()intx=0,z,y=z=-1;x=-y-z+-x;printf(x=%dn,x);输出结果是:,main()intx=0,z,y=z=-1;x+=-x-z-y;printf(x=%dn,x);输出结果是:,x=1,x=1,x=1,x=0,x=0,x=2,x=0,x=2,19.若a=3,b=3,c=5;则c+b+*a*+b的值是a+*a+b+c*a*+b的值是a*a+b*+a的值是printf(“%d,%dn”,a,a+)的输出结果是printf(“%d,%dn”,a,+a)的输出结果是printf(“%d,%dn”,+a,a)的输出结果是printf(“%d,%dn”,a+,a)的输出结果是,18.mainintx=3,y=0;y=+x*-x;/*x=+x*x-;*/printf(“y=%d,x=%dn”,y,x);输出结果是:,y=9,x=3,53,28,73,4,3,4,4,4,3,3,3,y=0,x=15,x=+x*x-等价于:x=+x;x=x*x;x-;,main()intx=3;x+=-x+x+;printf(“x=%in”,x);,x=7,main()inta=9;a+=a-=a+a;printf(“%dn”,a);此程序执行后的结果是:?,main()inta=5;a*=a/=a+;printf(“%dn”,a);此程序执行后的结果是:?,-18,2,main()intx=4,y;floatk=4,z;clrscr();printf(%dn,-x*-x*-x);x=4;y=+x*-x*-x;printf(y=%dn,y);z=+k+-k*-k;printf(z=%f,k=%fn,z,k);,输出结果:6y=27z=9.000000,k=3.000000,
展开阅读全文