【文档说明】C语言程序设计PPT第三章.ppt,共(62)页,980.512 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2210.html
以下为本文档部分文字说明:
§3.0预备知识计算机中数的表示及进制转换❖数码、基与权⚫数码:表示数的符号⚫基:数码的个数⚫权:每一位所具有的值❖数制语言程序设计第二章数据描述C❖各种进制之间的转换⚫二进制、八进制、十六进制转换成十进制◆方法:按权相加10012345
259212120212121111011)()(例=+++++=10012894868381136)()(例=++=1001231679781610162161516121)()(例=+++=AF语言程序设计第二章数据描述C❖各种进制之
间的转换(整数)⚫二进制、八进制、十六进制转换成十进制◆方法:按权相加⚫十进制转换成二进制、八进制、十六进制◆原理:的余数是2)2......22(222......22)......(000121100111
12011NaaaaaaaaaaaaaNnnnnnnnnnn++++=++++==−−−−−−◆方法:连续除以基,从低到高记录余数,直至商为0例把十进制数59转换成二进制数5922921427232120(59)10=(111011)2110111111011余余余余余
余例把十进制数159转换成八进制数1598198280(159)10=(237)8237余7余3余2例把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161CB余11余12余1语言程序设计第二章数据描述
C⚫二进制与八进制之间的转换◆二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制◆八进制转换成二进制:用3位二进制数代替每一位八进制数例(1101001)2=(001,101,001)2=(151)8例(2
46)8=(010,100,110)2=(10100110)2000~0001~1010~2011~3100~4101~5110~6111~7语言程序设计第二章数据描述C⚫二进制与十六进制之间的转换◆二进制转换成十六进制:从右向左,
每4位一组(不足4位左补0),转换成十六进制◆十六进制转换成二进制:用4位二进制数代替每一位十六进制数例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16例(4B9E)16=(0100,1011,1001,1110)2=(10
0101110011110)20000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F语言程序设计第二章数据描述C字节和位
❖内存以字节为单元组成❖每个字节有一个地址❖一个字节一般由8个二进制位组成❖每个二进位的值是0或101234567012345678910……...语言程序设计第二章数据描述C数值的表示方法——原码、反码和补码❖原码:最高位为
符号位,其余各位为数值本身的绝对值❖反码:⚫正数:反码与原码相同⚫负数:符号位为1,其余位对原码取反❖补码:⚫正数:原码、反码、补码相同⚫负数:最高位为1,其余位为原码取反,再对整个数加13126912457810119-5=49+7=16=(14)12语言程序
设计第二章数据描述C§3.1数据类型数据类型总表C数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型char枚举类型enum整型浮点型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型int数据类型决
定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作语言程序设计第三章数据描述C基本数据类型字符型实型16unsignedint0~65535类型符号关键字数的表示范围所占位数整型有无(signed)i
nt16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~2147483647320~4294967295unsignedlongunsignedshort160~65535有float
323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBMPC机为例:语言程序设计
第三章数据描述C§3.2常量与变量标识符❖定义:用来标识变量、常量、函数等的字符序列❖组成:⚫只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线⚫大小写敏感⚫不能使用关键字(附录B)由C语言规定的具有特定意义的字符串,通常也称为保留字。❖长度:最长32个字符,一般最好不要
超过8个字符❖命名原则:⚫见名知意⚫不宜混淆如l与I,o与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>
b语言程序设计第三章数据描述C练:判断下列标识符号合法性AP_0intla0_A3d◆一般用大写字母◆在作用域内不能改变也不能被赋值如#definePRICE30常量❖定义:程序运行时其值不能改变的量(即常数)❖分类:⚫直接常
量:◆整型常量12、-3◆实型常量4.5、-1.2◆字符常量‘a’、’D’◆字符串常量”hello”⚫符号常量:用标识符代表常量◆定义格式:#define符号常量常量例符号常量举例/*3-1.c*/#definePRICE30voidmain(){i
ntnum,total;num=10;total=num*PRICE;printf("total=%d",total);}运行结果:total=300语言程序设计第三章数据描述C例符号常量举例/*3-1.c
*/#definePRICE30voidmain(){intnum,total;num=10;PRICE=40;total=num*PRICE;printf("total=%d",total);}编译程序根据变量定义为其分配指定字节的内存单元…...地址inta=1,b=-3,c;
abc2字节2字节2字节地址地址…...内存1-3随机数变量❖概念:其值可以改变的量❖变量定义的一般格式:数据类型变量1[,变量2,…,变量n];❖变量初始化:定义时赋初值例:inta,b,c;floatdata;决定分配字节数和数的表示范围合法标识符例:inta=
2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;intx=y=z=1;❖变量的使用:先定义,后使用先赋值,后引用例1intstudent;stadent=19;//Undefinedsymbol‘statent
’infunctionmain例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain❖变量定义位置:一般放在函数开头main(){inta,b=2;floatdat
a;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}变量定义可执行语句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“d
ata=%f\n”,data);}语言程序设计第三章数据描述C❖变量名与变量值变量名代表内存中的一个存储单元,用于存放该变量的值该存储单元的大小由变量的数据类型决定§3.3整型数据整型常量(整常数)❖三种形式:⚫十进制整数:由数
字0~9和正负号表示.如123,-456,0⚫八进制整数:由数字0开头,后跟数字0~7表示.如0123,011⚫十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff问题:0123=()100x123=()100Xff=()1083291255问题
:0123=()100x123=()100Xff=()10语言程序设计第三章数据描述C123=1111011(B)二进制=173(O)八进制=7B(X)十六进制inti=0173;intj=0x7b;intk=123;整型变量❖占字节数随机器不同而
不同,一般占一个机器字❖short≤int≤long❖可用sizeof(类型标识符)测量实型变量❖float:占4字节,提供7位有效数字❖double:占8字节,提供15~16位有效数字字符型变量❖字符变量存放字
符ASCII码❖char与int数据间可进行算术运算例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/
*s=33+71;*/没有字符串变量,用字符数组存放语言程序设计第三章数据描述C整型变量❖数据在内存中是以二进制形式存放的。❖TurboC2.0和TurboC++3.0为一个整型变量在内存中分配2个字节的存储单元❖如定义了一个整型变量:语言程序设计第三章数据描述Cinti;
i=10;❖在计算机中,数值是以补码的形式存在的。❖正数的原码和补码相同。❖负数的原码与补码不同10→0000000000001010原码-10→1000000000001010原码-10→1111111111110101反码-10→
1111111111110110补码整型变量的分类❖整型变量有6种类型:➢有符号基本整型[signed]int;➢无符号基本整型unsignedint;➢有符号短整型[signed]short[int];➢无符号短整型unsi
gnedshort[int];➢有符号长整型[signed]long[int];➢无符号长整型unsignedlong[int];语言程序设计第三章数据描述C类型符号关键字数的表示范围所占位数整型有无(signed)
int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~2147483647320~4294967295unsignedlongunsignedshor
t160~6553516unsignedint0~65535inta;-32768~32767unsignedintb;0~65535整型变量的定义例(3-3.c):#include<stdio.h>voidmain(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;
c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}语言程序设计第三章数据描述C运行结果:a+u=22,b+u=-14不同种类的整型数据可以进行算术运算整型变量的溢出例(3-4.c):#include<stdio.h>voi
dmain(){inta,b;a=32767;b=a+1;printf(“%d,%d\n”,a,b);}语言程序设计第三章数据描述Ca:011111111111111132767b:1000000000000000-32768❖整型常量的类型⚫根据其值所
在范围确定其数据类型-32768~+32767int型-2147483648~+2147483647longint型⚫在整常量后加字母l或L,认为它是longint型常量⚫在整常量后加字母u或U,认为它是unsignedint型常量此时所能表示的数值范围为0~
6553530000为int型65536为longint型123u123l§3.4浮点型数据实型常量(实数或浮点数)❖表示形式:⚫十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,
123.⚫指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4⚫规范化指数形式:字母e之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字语言程序设计第三章数据描述C浮点型变量1、浮点型数据在内存存放的形式一个浮点型数据在内存种占4个字节,存储方式
与整型数据存储的方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分为两部分❖小数部分❖指数部分语言程序设计第三章数据描述C1.314159+在4个字节(32位)中,究竟用多少位来表示小数部分,多少位来表示指数部分,标准中并没有具体对定。不少操作
系统用24位来表示小数部分,用8位来表示指数部分(包括符号位)。小数越多,精度越高。指数越多,范围越大3.14159存放形式:浮点型变量的分类❖单精度(float)❖双精度(double)❖长双精度(longdouble)语言程序设计第三章数据
描述C类型位数有效数字(精度)数值范围float326--7-3.4*e-38——3.4*e38double6415--16-1.7*e-308——1.7*e308longdouble12818--19-1.2*e-49
32——1.2*e4932floatx,y;doublez;浮点型变量的舍入误差由于浮点变量是由有限的存储单元组成,因此提供的有效数字总是有限的。在有效位以外的数字将被舍去。数据精度(有效位)与取值范围是两个不同的概念:f
loatx=1.23456789;floaty=123456789;虽在数据表示范围内,但无法精确表达floatz=1.2e55(3-11.c)z的精度要求不高,但数据表示范围超出并不是所有的实数都能在计算机中精确表示x=1.234568y=1234567
92.000000例(3-5.c):#include<stdio.h>voidmain(){floata,b;a=123456.789e5;b=a+20;printf(“a=%f,b=%f\n”,a,b);}语言程序设计第三章数据描述C运行结果:a=12345678848
.000000,b=12345678848.000000浮点型常量的类型(OVER)⚫默认double型⚫在实型常量后加字母f或F,认为它是float型f=1.1234*456.123按双精度进行运算,最后取前7位赋给浮点型变量f⚫浮点型常量可以赋给
一个float型、double型或longdouble型变量,根据变量类型截取实型常量中相应的有效位数字。floata;a=111111.111;接收7位有效数字,最后两位小数不起作用§3.5字符型数据字符常量❖定义:用单引号括起来的单个普通字符
或转义字符.❖字符常量的值:该字符的ASCII码值(附录A)ASCII字符集:列出所有可用的字符每个字符:唯一的次序值(ASCII码)如‘A’——65,‘a’——97,‘0’——48,‘\n’——10如‘a’‘A’‘?’‘\n’‘\101’‘0’----’9’‘A’
----’Z’‘a’----’z’❖转义字符:反斜线后面跟一个字符或一个代码值表示如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’--
---------’0’‘\483’----------()‘\0’空操作‘\477’----------()例:‘A’-------’\101’-------’\x41’--------65<转义字符及其含义:转义字符含义\n\v\r\a\‘\ddd\t\b\f\\\“\xhh转义字符含义换
行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符运行结果:(屏幕显示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例转义字符举例(3-2.c)main(){printf("\101\x42C\n");pri
ntf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}例main(){printf(“Y\b=\n”);}运行结果:屏幕
显示:=打印机输出:¥字符变量❖字符变量用来存放字符常量,只能放一个字符。不能用来放置一个字符串。❖定义charc1,c2;❖赋值c1=‘a’,c2=‘b’;语言程序设计第三章数据描述C⚫存储形式:➢一个字符变量在内存中占一个
字节➢字符数据在内存中的存储,并不是把字符本身放到内存单元去,而是将该字符相应的ASCII代码放到存储单元中。⚫使用方法:字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出
。对字符数据可以进行算术运算字符数据与整型数据可以互相赋值字符数据在内存中的存储形式及使用方法字符ASCII码内存‘A’6501000001‘B’6601000010‘A’+1=‘A’+1=‘B’‘A’+1=66例:向字符变量赋予整数(
3-6.c)#include<stdio.h>voidmain(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);
}语言程序设计第三章数据描述Cab9798先将ASCII码转换成相应字符,然后输出直接将ASCII码作为整数输出#include<stdio.h>voidmain(){charc1,c2;c1=‘a’;c2=‘b’;printf(“%c
%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出(%c),也可以以整数形式输出(%d)注意:字符数据只占一个字节,它只能存放0~255范围内的整数例:大小写字母转化(3-7.c)#include<std
io.h>voidmain(){charc1,c2;c1=’a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c\n”,c1,c2);}语言程序设计第三章数据描述CAB对字符数据可以进行算术运算字符数据与
整型数据可以互相赋值例#include<stdio.h>voidmain(){inti;charc;i=‘a’;c=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}a,97a,97➢若系统将字符变量定义为signedchar型,其存储单元中的最高
位作为符号位,取值范围是-128~127➢当存放一个ASCII码是128~255之间的字符,以整数输出时,输出的是负数。如果不想按照有符号数处理,需要定义该字符变量为unsignedchar,此时范围是0
~255charc=130;printf(“%d”,c);输出:-126unsignedcharc=130;printf(“%d”,c);输出:130❖字符常量与字符串常量不同字符串常量❖定义:用双引号(“”)括起
来的字符序列❖存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中aa\0例‘a’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;语言程序设计第三章
数据描述C“hello”“Howareyou”“a”“$123”在内存中占6个字节不能把一个字符串常量赋给一个字符变量语言程序设计第三章数据描述C§3.6变量赋初值在程序中,变量必须在程序的开始进行定义,方便使用。在使用前,最好赋初始值。inta=3,b=3,c=3;表示a,b,c都赋
值为3inta,b,c=3;表示a,b为整型变量,c初值为3相当于inta,b,c;/*定义a,b,c为整型变量*/c=3;/*将3赋给c*/inta=b=c=3;例/*3-8.c*/#definePRICE12.5v
oidmain(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a’;printf(“total=%f,ch1=%
c\n”,total,ch1);}变量定义输出结果运行结果:total=37.500000,ch1=d语言程序设计第三章数据描述C§3.7各类数值型数据间的混合运算隐式转换❖什么情况下发生⚫运算转换------不同类型数据混合运算时⚫赋值转换------把一个值赋给与其类型不同的变量时⚫输出转
换------输出时转换成指定的输出格式⚫函数调用转换------实参与形参类型不一致时转换❖运算转换规则:不同类型数据运算时先自动转换成同一类型语言程序设计第三章数据描述Cdoublefloatlongunsignedintchar,short低高
说明:必定的转换运算对象类型不同时转换例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble
10+‘a’+i*f-d/l例inti;floatf;doubled;longl;§3.8算术运算符和算术表达式C运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:((!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:
)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)语言程序设计第三章数据描述C学习运算符应注意:❖运算符功能❖与运算量关系⚫
要求运算量个数⚫要求运算量类型❖运算符优先级别❖结合方向❖结果的类型语言程序设计第三章数据描述C算术运算符和算术表达式❖基本算术运算符:➢+:加法运算符,或正值运算符,如3+5,+3➢-:减法运算符,或负值运算符,如5-2
,-3➢*:乘法运算符,如3*5➢/:除法运算符,如5/3➢%:模运算符,或称求余运算符,如7%3说明:⚫两整数相除,结果为整数⚫%要求两侧均为整型数据例5/2=-5/2.0=例5%2=-5%2=1%10=5%1=5.5%2例5/2=2-5/2.0=-2.5例5%2=1-5%2=-11%10=1
5%1=05.5%2()语言程序设计第三章数据描述C例5/3=1-5/3=-1❖算术表达式和运算符的优先级与结合性⚫C算术表达式:用算术运算符和括号将运算对象连接起来的,符合C语法规则的式子a+b*c
/d-2.5⚫优先级:*/%----->+-⚫结合方向:从左向右,左结合性(附录C)a+b-c优先级别相同,看结合方向说明:⚫一个运算符两侧数据类型不同,先自动进行类型转换,具有同一类型后再进行运算语言程序
设计第三章数据描述C强制类型转换运算符❖一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6❖说明:强制转换得到所需类型的中间变量,原变量类型不变例main(){floatx;inti;x=3.6
;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生语言程序设计第三章数据描述C❖自增、自减运算符++--⚫作用:使变量值加1或减1⚫种类:◆前置++i,--i(先执行i
+1或i-1,再使用i值)◆后置i++,i--(先使用i值,再执行i+1或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语言程序设计第三章数据描述C⚫说明:◆++--不能用于常量和表达式,如5++,(a+b)++◆++--结合方向:自右向左◆
优先级:-++-------->*/%----->+-例-i++-(i++)i=3;printf(“%d”,-i++);//-3例-i++i=3;printf(“%d”,-i++);语言程序设计第三章数据描述C例j+++k;(j++)+k;例(i++)+(i++)+(i++)Tu
rboc系统得到表达式值为9,i=6例i=3;a=i++;b=i++;c=i++;d=a+b+c;d=12,i=6§3.9赋值运算符和赋值表达式❖简单赋值运算符⚫符号:=⚫格式:变量标识符=表达式⚫作用:将一个数据(常量或表达式)
赋给一个变量❖复合赋值运算符⚫在赋值符“=”之前加上其他运算符,可以构成复合的运算符⚫种类:+=-=*=/=%=《=》=&=^=|=⚫含义:exp1op=exp2exp1=exp1opexp2a+=3a=a+3x
*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;语言程序设计第三章数据描述C先使a加3,再赋给a❖类型转换将浮点型数据(包括单、双精度)赋给整形变量时,会舍弃浮点小数部分。以整数形式存储在整型变量中。例:i=3.09283;将整数给
单、双精度变量时,以浮点形式存储,大小保持不变。将一个double型数据赋值给float时,截取其前面7位有效数字,放到float变量的存储单元中。但是范围不能溢出。例:floatf=1.12355422将
一个float型数据赋给double变量时,数值不变,有效位数扩展到16位语言程序设计第三章数据描述C如果将字符型数据赋给整型变量时,由于字符型变量只占有1个字节,而整形变量占2个字节,因此把字符数据(8个)放到整型变量的低8位中。有两种情况如下:将字符处理为无符号类型,这样把低8位放到整型变
量的低8位,高8位补零。111111100000000011111110如果将字符看作有符号数,如果字符最高位为0,补零,字符最高位为1,补1.c=‘\376’111111101111111111111110语言程序设计第三章数据描述C如果将一个int,short,long型数据赋值给一个c
har类型的变量时,只是将低8为原封不动送到char型变量。将带符号的整型数据赋值给long型变量时,要进行符号扩展。如果int型数据为正值,则补0,如果int型数据为负值,则补1如果将long型数据赋值给int型变量,只是从lon
g型数据中的低16位原封不动的送到整型变量unsignedint和longint之间原封不动相互传递将非unsigned型数据赋值给长度相同的unsigned型变量,也是原样赋值语言程序设计第三章数据描述C例:inti=289;charc=‘a’;c=i;i=289000000001001
00001c=330010000110000000100100001111111111111111110000000100100001000000001001000010000000000000000000000000010
0100001b=800000000000000000000000000000001000a=800000000000001000b=6553600000000000000000100000000000000000a=00000000000000
0000例:inta;longb=8;a=b;#include<stdio.h>voidmain(){unsigneda;intb=-1;a=b;printf(“%u\n”,a);}运行结果:65535❖赋值表达式➢形式:<变量><赋值运算
符><表达式>➢变量=表达式➢计算赋值运算符右侧表达式的值➢将赋值运算符右侧表达式的值赋给左侧的变量➢将赋值运算符左侧变量的值作为表达式的值a=3*5表达式值为15,a的值为15➢赋值运算符左侧的标识符称为左值if((a=b)>0)t=a;❖说明:((O
VER)⚫结合方向:自右向左⚫左值必须是变量,不能是常量或表达式⚫赋值表达式的值与变量值相等,且可嵌套⚫赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例3=x-2*y;a+b=3;例floatf;inti;i=10;f=i;则f=10.0例inti;
i=2.56;//结果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值为5,a,b,c值为5//b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=
10,c=2语言程序设计第三章数据描述C(a=3*5)=4*3a=3*5=4*3❖说明:⚫结合方向:自右向左⚫优先级:12⚫左侧必须是变量,不能是常量或表达式⚫赋值表达式的值与变量值相等,且可嵌套⚫赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例:a=12;a+=a-=a*
a例:inta=2;a*=4-1;a+=a*=a-=a*=3;//a=-264等价于a=a+(a=a-(a*a))//a=0等价于a=a+(a=a*(a=a-(a=a*3)))语言程序设计第三章数据描述C⚫赋值表达式也可以包含复合的赋值运算符逗号运算符和表达式❖形式:表达式
1,表达式2,……表达式n❖优先级最低❖结合性:从左向右❖先计算表达式1,然后计算表达式2,……,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值。❖逗号表达式的值:等于表达式n的值❖用途:常用于循环for语句中例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语言程序设计第三章数据描述C逗号运算符和表达式❖形式:表达式1,表达式2,……表达式n❖结合性:从左向右❖优先级:15❖逗号表达式的值:等于表达式n的值❖用途:常用于循环for语句中例:/*ch2_
6.c*/#include<stdio.h>main(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);}运行结果:x=3语言程序设计第三章数据描述C#include<stdio.h>voidmain(){charc1=
'a',c2='b',c3='c',c4='\101',c5='\116';printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c%c\n",c4,c5);}运行结果:aabbccabcA
N写出以下程序的运行结果:要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如:字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编写程序,用赋初值的方法使c1、c2
、c3、c4、c5这5个变量的值分别为’C’、‘h’、’i’、‘n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变成’G’、‘l’、’m’、‘r’、’e’,并输出。#include<stdio.
h>voidmain(){charc1=‘C’,c2=‘h’,c3=‘i’,c4=‘n’,c5=‘a’;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“passwordis%c%c
%c%c%c\n”,c1,c2,c3,c4,c5);}运行结果:passwordisGlmre求下面算术表达式的值(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+
(int)x%(int)y设a=2,b=3,x=3.5,y=2.52.53.5#include<stdio.h>voidmain(){inti,j,m,n;i=8;j=10;m=++i;n=j++;pri
ntf(“%d,%d,%d,%d\n”,i,j,m,n);}运行结果:9,11,9,10写出以下程序的运行结果:写出下面赋值表达式运算后a的值,设原来a=12(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a
+a(5)a%=(n%=2),n的值等于5(6)a+=a-=a*=a241060000