2、C语言数据描述与基本操作.ppt
C语言程序设计1C语言程序设计教学目标教学目标o掌握掌握C语言标识符的组成语言标识符的组成o理解理解C语言的基本数据类型语言的基本数据类型o掌握变量定义的方法掌握变量定义的方法o掌握常用的运算符的使用掌握常用的运算符的使用o掌握混合运算的数据转换方法掌握混合运算的数据转换方法2C语言程序设计本章主要内容本章主要内容 2.1 工作场景导入 2.2 数据类型 2.3 运算符与表达式 2.4 不同类型数据间的混合运算 2.5 回到工作场景 32.1工作场景导入工作场景导入 4C语言程序设计2.1.1 Windows XP的启动的启动o【工作场景工作场景】o甲甲乙乙两两人人在在玩玩一一简简单单的的数数字字游游戏戏,首首先先甲甲对对一一个个4 4位位整整数数进进行行变变化化,再再告告诉诉乙乙其其所所用用的的变变化化规规则则,然然后后由由乙乙来来推推测测变变化化之之前前的的数数值值是是多多少少。设设甲甲的的变变化化规规则则为为:首首先先对对该该数数值值的的各各位位数数字字逆逆序序,然然后后用用新新数数上上的的每每一一位位数数字字加加5 5后后余余上上1010后后的的余余数数代代替替各各位位上上的的数数字字。试试推推测测出出原原来来的数字。现假设所给数据为的数字。现假设所给数据为63826382,程序运行结果如下图所示。,程序运行结果如下图所示。5C语言程序设计o【引导问题引导问题】o(1)变量该如何定义,标识符命名规则是什么?变量该如何定义,标识符命名规则是什么?o(2)所给数字是常量还是变量,按常量存储还是按变量存储?所给数字是常量还是变量,按常量存储还是按变量存储?o(3)各种运算符该如何选择?加减乘除、取余数等各种运算符该如何表各种运算符该如何选择?加减乘除、取余数等各种运算符该如何表示?示?o(4)如何实现换行,比如,如图如何实现换行,比如,如图2.1所示的换行?所示的换行?o(5)如何判断所给数据是整型、浮点型还是字符型等?不同类型的数据如何判断所给数据是整型、浮点型还是字符型等?不同类型的数据该如何转换?该如何转换?o(6)变量和赋值运算有什么关系?变量和赋值运算有什么关系?6C语言程序设计2.1 C语言的数据类型语言的数据类型o基本类型基本类型n整整 型:短整型(型:短整型(short)、整型()、整型(int)、)、长整型长整型longn浮点型:单精度型(浮点型:单精度型(float)、双精度型)、双精度型(double)n字符类型字符类型(char)o构造类型:数组、结构体、共用体、枚举构造类型:数组、结构体、共用体、枚举o指针类型指针类型o空类型(空类型(void)7C语言程序设计2.2 常量与变量常量与变量 o2.2.1标识符命名标识符命名o2.2.2变量变量o2.2.3常量常量8C语言程序设计2.2.1标识符命名标识符命名o标识符:字符序列的总称。在标识符:字符序列的总称。在C语言里用标语言里用标示符来表示常量、变量、函数和数据类型的示符来表示常量、变量、函数和数据类型的名字名字 n字母、数字和下划线组成;字母、数字和下划线组成;n第一个字符不能是数字字符;第一个字符不能是数字字符;n不能是关键字;不能是关键字;n不建议使用预定义符。不建议使用预定义符。9C语言程序设计举例举例osum oSum oM.D.Johnodaodateo3days ostudent_name o#33 olotus_1_2_3 ochar oab o_above o$123 X X X X X X 10C语言程序设计2.2.2变量变量o变量:在程序运行过程中其值可以发生改变的量变量:在程序运行过程中其值可以发生改变的量n变量名变量名n变量类型变量类型n变量的值变量的值o定义形式定义形式n类型名类型名 变量名变量名1,变量名,变量名2,变量名,变量名n;int int a,b,ca,b,c;char char chch;double double d,fd,f;11C语言程序设计2.2.2变量变量o注意!注意!变量先定义后使用!12C语言程序设计2.2.2变量变量o变量的赋值:变量的赋值:n先定义,后赋值:int a;a=3;n定义的同时赋值:int a=3;n注意:o变量的值可以改变;o多个同类型同大小变量的初始化:nint x,y,z;x=y=z=5;正确nint x=5,y=5,z=5;正确nint x=y=z=5;错误13C语言程序设计2.2.3常量常量o常量:在程序运行过程中其值不发生改变的量常量:在程序运行过程中其值不发生改变的量n直接常量直接常量n符号常量符号常量:用一个标识符来表示常量:用一个标识符来表示常量#define#define#define#define 符号常量符号常量符号常量符号常量 常量值常量值常量值常量值#define PRICE 30#define PRICE 30#include#include int main()int main()int int num,totalnum,total;num=10;num=10;total=num*PRICE;total=num*PRICE;printf(totalprintf(total=%=%d,totald,total););return 0;return 0;运行结果:运行结果:运行结果:运行结果:total=300total=300total=300total=300 14C语言程序设计o使用符号常量的优点使用符号常量的优点 n可以使程序更清晰易读可以使程序更清晰易读 n程序修改更加容易程序修改更加容易 o通常用大写字母表示符号常量,小写字母表通常用大写字母表示符号常量,小写字母表示变量,以便区别示变量,以便区别 15C语言程序设计2.3整型数据整型数据 o整型常量整型常量:整数(十进制常量、八进制常量和十:整数(十进制常量、八进制常量和十六进制常量)六进制常量)类类型型组组成成组组成成规则规则举举例例十十进进制制数字数字0 09 9非非0 0数字开数字开头头12 -1234+1012 -1234+10八八进进制制数字数字0 07 70 0数字开数字开头头012 012 十六十六进进制制数字数字0 09 9字母字母a af f(或(或A AF F)0 x0 x或或0X0X开开头头0 x10 0 x12f0 x10 0 x12f(1 1)常量前面的)常量前面的“+”+”和和“-”-”表示数的正、负。表示数的正、负。(2 2)常量也有类型,正型常量默认是)常量也有类型,正型常量默认是intint型(即有符号整数)型(即有符号整数)(3 3)在数的后面加上字母)在数的后面加上字母u u或或U U表示无符号整数,加上字母表示无符号整数,加上字母l l或或L L表示长整型数表示长整型数16C语言程序设计o整型变量的分类整型变量的分类 分分类类位数位数取取值值范范围围短整型短整型shortshort1616-32768-327683276732767整型整型intint1616或或3232-32768-327683276732767-2147483648-214748364821474836472147483647长长整型整型longlong3232-2147483648-214748364821474836472147483647注:判断某一数据类型占内存的字节数可用注:判断某一数据类型占内存的字节数可用sizeof(数据类型说明数据类型说明)来计算来计算17C语言程序设计o整型变量的定义方法整型变量的定义方法 n符号说明符号说明 变量名表;变量名表;short a,b;int a,b;long a,b;18C语言程序设计2.4浮点型数据浮点型数据 o浮点型常量浮点型常量:实型常量或实数,它只有十进:实型常量或实数,它只有十进制形式,全部都是有符号数制形式,全部都是有符号数n小数形式:小数形式:09,小数点和正负号表示,小数点和正负号表示n指数形式:指数形式:09、小数点、小数点、+-号和字母号和字母e/E 说明:说明:(1 1)浮点型常量的默认类型是)浮点型常量的默认类型是doubledouble(2 2)在常量后面加)在常量后面加f f或或F F指定为指定为floatfloat型型 (3 3)指数必须为整数)指数必须为整数(4 4)e/Ee/E之前必须有数字之前必须有数字19C语言程序设计2.4浮点型数据浮点型数据o浮点型变量的分类浮点型变量的分类n单精度(单精度(float)n双精度(双精度(double)o浮点型变量定义方法浮点型变量定义方法 n类型说明符类型说明符 变量名列表;变量名列表;float a,b,c;double a,b,c;20C语言程序设计2.5字符型数据字符型数据 o字符常量字符常量:用用单引号单引号括起来的括起来的单个单个普通字普通字符符或或转义字符转义字符n字符是按其所对应的字符是按其所对应的ASCII码值来存储的,一码值来存储的,一个字符占一个字节(即个字符占一个字节(即8位)位)21C语言程序设计o字符串常量字符串常量:一对:一对双引号双引号(“”)括起来的)括起来的一串字一串字符符 o字符串常量在内存中存储:字符串常量在内存中存储:n保存每个字符的保存每个字符的ASCII值值n系统自动在字符串的末尾加一个串结束标志系统自动在字符串的末尾加一个串结束标志C Ch h i i n n a a 0 0字符串:字符串:ChinaChina“A”和和A的区别?的区别?22C语言程序设计o转义字符转义字符:用:用反斜杠反斜杠后面跟一个字符或一个八进后面跟一个字符或一个八进制或十六进制数表示制或十六进制数表示 转义转义字符字符功能与意功能与意义义ASCIIASCII值值aa响响铃铃7 7bb退格退格8 8f f换页换页1212nn换换行行1010r r回回车车(返回到当前行首)(返回到当前行首)1313t t水平制表水平制表9 9vv垂直制表垂直制表11 1100ASCIIASCII为为0 0的字符的字符0 0 字符字符 9292字符字符3939 字符字符 3434 dddddd八八进进制表示的制表示的ASCIIASCII码码的字符的字符三位八三位八进进制制 xhhxhh十六十六进进制表示的制表示的ASCIIASCII码码的字符的字符两位十六两位十六进进制制23C语言程序设计例例 转义字符举例转义字符举例#includeint main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);return 0;运行结果:运行结果:A B CI say:”How are you?”C ProgramTurbo C例例 int main()printf(“Yb=n”);return 0;运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打印机输出:24C语言程序设计o字符变量字符变量n字符变量用来存放字符,它只能存放字符变量用来存放字符,它只能存放一个字符一个字符,不能存放字符串不能存放字符串 o字符变量的定义形式字符变量的定义形式 nchar 变量名表;变量名表;char c1,c2;char c1,c2;#includeint main()char c1=a,c2=b;c1=c1-(a-A);c2=c2-(a-A);printf(%c%cn,c1,c2);return 0;程序运行结果:程序运行结果:A B25C语言程序设计【练习练习练习练习2-12-1】请判断下列哪些用户自定义标识符是合法请判断下列哪些用户自定义标识符是合法请判断下列哪些用户自定义标识符是合法请判断下列哪些用户自定义标识符是合法的?(的?(的?(的?()AA)a&ba&b,1_xy,e5,1_xy,e5,a.ba.b B B)exam,x1,int exam,x1,int,define,defineC C)ram,_ram,_mnmn,3ep,x*y D,3ep,x*y D)chch,x_3_1,z2 ,x_3_1,z2,num,num【练习练习练习练习2-22-2】下面哪个是合法的字符串常量(下面哪个是合法的字符串常量(下面哪个是合法的字符串常量(下面哪个是合法的字符串常量()AA)a Ba B)076 C076 C)Hello DHello D)HelloHello练一练练一练26C语言程序设计【练习练习练习练习2-32-3】下面哪个表示浮点数的科学计数表示法下面哪个表示浮点数的科学计数表示法下面哪个表示浮点数的科学计数表示法下面哪个表示浮点数的科学计数表示法是正确的?(是正确的?(是正确的?(是正确的?()AA)3e2.5 B3e2.5 B)1.25e C1.25e C)3.45e-5 3.45e-5 DD)e+8e+8【练习练习练习练习2-42-4】下面的变量定义及初始化语句哪个是正下面的变量定义及初始化语句哪个是正下面的变量定义及初始化语句哪个是正下面的变量定义及初始化语句哪个是正确的?(确的?(确的?(确的?()AA)int a=3;b=5;Bint a=3;b=5;B)int a=3 b=5int a=3 b=5C C)int a=3,b=5;Dint a=3,b=5;D)int a=3,b=5;int a=3,b=5;练一练练一练27C语言程序设计2.6运算符与表达式、数据类型的转换运算符与表达式、数据类型的转换o2.6.1 算术运算符算术运算符o2.6.2 自增和自减运算符自增和自减运算符o2.6.3 赋值运算符赋值运算符o2.6.4 关系和逻辑运算符关系和逻辑运算符o2.6.5 条件运算符条件运算符o2.6.6 逗号运算符逗号运算符28C语言程序设计2.6.1算术运算符算术运算符o算术运算符:算术运算符:+、-、*、/、%o说明:说明:n两个整数相除,所得商仍然为整数,舍去两个整数相除,所得商仍然为整数,舍去小数部分,即小数部分,即3/2结果是结果是1,而不是,而不是1.5n取余运算要求取余运算要求运算符两端都必须为整型数运算符两端都必须为整型数据据,浮点数据不能进行取余运算,浮点数据不能进行取余运算29C语言程序设计5+39-25*43/44%3-5%2872001-130C语言程序设计2.6.2自增和自减运算符自增和自减运算符 o+:变量自加:变量自加1o-:变量自减:变量自减1o前置运算:前置运算:n+在变量的前面:变量先进行加在变量的前面:变量先进行加1运算,然后运算,然后再参与其它运算再参与其它运算n-在变量的前面:变量先进行减在变量的前面:变量先进行减1运算,然后再运算,然后再参与其它运算参与其它运算int x=5,y=6;+x -y+x为为6,x值为值为6 -y 为为5,y值为值为531C语言程序设计o后置运算:后置运算:n+在变量的后面,则先参与其它运算,然后在变量的后面,则先参与其它运算,然后变量再进行加变量再进行加1运算运算n-在变量的后面:则先参与其它运算,然后变在变量的后面:则先参与其它运算,然后变量再进行减量再进行减1int x=5,y=6;x+y-x+为为5,x值为值为6 y-为为6,y值为值为532C语言程序设计o1)若若x=5,则执行,则执行y=x+操作后的操作后的x,y的值为?的值为?oy=x+相当于执行下面两步操作:相当于执行下面两步操作:oy=xox=x+1o则最终:则最终:oy=5ox=6o2)若若x=5,则执行,则执行y=+x操作后的操作后的x,y的值为?的值为?oy=+x相当于执行下面两步操作:相当于执行下面两步操作:ox=x+1oy=xo则最终:则最终:ox=6oy=633C语言程序设计例例2.6:前置和后置运算前置和后置运算#includeint main()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%dn,i,j,m,n);return 0;程序运行结果:程序运行结果:9,11,9,1034C语言程序设计算术表达式算术表达式o定义:定义:用算术运算符号将运算对象(常量、用算术运算符号将运算对象(常量、变量、函数等)、圆括号连接起来的式子变量、函数等)、圆括号连接起来的式子 o表达式的求值表达式的求值a=5b=135C语言程序设计o数学公式数学公式 的的C语言表示语言表示36C语言程序设计o表达式值的类型表达式值的类型n同一表达式中的不同类同一表达式中的不同类型常量及变量,均应转型常量及变量,均应转换为同一类型的量换为同一类型的量 nC语言的编译程序将所有语言的编译程序将所有操作数转换为与最高类操作数转换为与最高类型操作数同类型型操作数同类型 自动类型转换自动类型转换37C语言程序设计o强制类型转换强制类型转换n(类型名)(表达式)(类型名)(表达式)n原来变量的数据类型不发生变化原来变量的数据类型不发生变化(int)(x+y)(int)x+y(double)(3/2)(int)3.6 精度损失问题精度损失问题较高类型向较低类型转换时可能发生38C语言程序设计例例2.8:已知已知int a=7;float x=2.5,y=4.7;计算表达式的值;计算表达式的值39C语言程序设计o请计算以下算术表达式的值请计算以下算术表达式的值1)x+a%3*(int)(x+y)%2/4设设x=2.5,a=7,y=4.72)(float)(a+b)/2+(int)x%(int)y设设a=2,b=3,x=3.5,y=2.540C语言程序设计2.6.3 赋值运算符赋值运算符o赋值运算符:赋值运算符:=o格式:格式:变量变量=运算对象运算对象o功能:把右边运算对象的值赋给左边变量功能:把右边运算对象的值赋给左边变量 o赋值运算符赋值运算符“=”和判断相等(和判断相等(=)的区)的区别别 o赋值运算符的优先级只高于逗号运算符赋值运算符的优先级只高于逗号运算符 o赋值运算符的结合性是从右向左赋值运算符的结合性是从右向左 o赋值中的类型转换以左边变量的类型为主赋值中的类型转换以左边变量的类型为主 41C语言程序设计复合赋值运算符复合赋值运算符o定义:复合赋值运算符是在赋值的同时,进定义:复合赋值运算符是在赋值的同时,进行了运算行了运算 o格式:格式:变量变量 OP=运算对象运算对象 相当于:变量相当于:变量=变量变量OP(运算对象)(运算对象)o结合性:从右向左结合性:从右向左42C语言程序设计运算符运算符含含义义举举例例优优先先级级结结合性合性+=+=加加赋值赋值x+=5x+=5相当于相当于x=x+5x=x+51414从右向左从右向左-=-=减减赋值赋值x-=5x-=5相当于相当于x=x-5x=x-51414从右向左从右向左*=乘乘赋值赋值x*=5x*=5相当于相当于x=x*5x=x*51414从右向左从右向左/=/=除除赋值赋值x/=5x/=5相当于相当于x=x/5x=x/51414从右向左从右向左%=%=取余取余赋值赋值x%=5x%=5相当于相当于x=x%5x=x%5 1414从右向左从右向左&=&=按位与按位与赋值赋值x&=5x&=5相当于相当于x=x&5x=x&51414从右向左从右向左=按位异或按位异或赋值赋值x=5x=5相当于相当于x=x5x=x5 1414从右向左从右向左|=|=按位或按位或赋值赋值x|=5x|=5相当于相当于x=x|5x=x|51414从右向左从右向左=按位右移按位右移赋值赋值x=5x=5相当于相当于x=x5x=x51414从右向左从右向左=按位左移按位左移赋值赋值x=5x=5相当于相当于x=x5x=x51414从右向左从右向左43C语言程序设计赋值表达式赋值表达式o定义:定义:赋值运算符将一个变量和表达式连接赋值运算符将一个变量和表达式连接起来构成的式子起来构成的式子 o一般形式:一般形式:=将表达式的值求出来,赋给左边的变量,使变量的值为表达式的值将表达式的值求出来,赋给左边的变量,使变量的值为表达式的值 a=3;d=func();c=d+2;x=20/4;44C语言程序设计n表达式的值的类型以变量的类型为主表达式的值的类型以变量的类型为主 int x;x=10+30/7+1.5double y;y=10+30/7+100n赋值表达式的值又可以作为另外一个赋值表达式赋值表达式的值又可以作为另外一个赋值表达式n赋值表达式也可以包含复合赋值运算符赋值表达式也可以包含复合赋值运算符 45C语言程序设计练习练习n请写出下列表达式运算后请写出下列表达式运算后a的值,的值,a、n为整型,为整型,a=12,n1)a*=2+3n2)a/=a+an3)a%=(n%=2),n的值为的值为5n4)a+=a-=a*=a46C语言程序设计【思考题思考题思考题思考题2-32-3】输入一个字母,判断它是否是小输入一个字母,判断它是否是小输入一个字母,判断它是否是小输入一个字母,判断它是否是小写字母,若是则转换成大写字母,否则不转换,写字母,若是则转换成大写字母,否则不转换,写字母,若是则转换成大写字母,否则不转换,写字母,若是则转换成大写字母,否则不转换,并输出所得的结果。并输出所得的结果。并输出所得的结果。并输出所得的结果。(一)(一)(一)(一)程序分析程序分析程序分析程序分析 在输入一个字符时,先判断它的取值区间,如果在输入一个字符时,先判断它的取值区间,如果在输入一个字符时,先判断它的取值区间,如果在输入一个字符时,先判断它的取值区间,如果是大写字母是大写字母是大写字母是大写字母“AAZ”Z”,则它的,则它的,则它的,则它的ASCIIASCII值是值是值是值是65659090,如果是小写字母,如果是小写字母,如果是小写字母,如果是小写字母“a az”z”的的的的ASCIIASCII码值是码值是码值是码值是9797122122,大小写字母,大小写字母,大小写字母,大小写字母ASCIIASCII码的差值为码的差值为码的差值为码的差值为3232,因此半小写字母转换成大写字母只需将其,因此半小写字母转换成大写字母只需将其,因此半小写字母转换成大写字母只需将其,因此半小写字母转换成大写字母只需将其ASCIIASCII码减去码减去码减去码减去3232即可,反之将大写字母转换成即可,反之将大写字母转换成即可,反之将大写字母转换成即可,反之将大写字母转换成小写字母只需将其小写字母只需将其小写字母只需将其小写字母只需将其ASCIIASCII码加上码加上码加上码加上3232即可。即可。即可。即可。2.6.4关系和逻辑运算符关系和逻辑运算符47C语言程序设计(二)编写程序代码(二)编写程序代码(二)编写程序代码(二)编写程序代码main()main()char c;/*char c;/*定义变量定义变量定义变量定义变量c c为字符数据类为字符数据类为字符数据类为字符数据类型型型型*/printf(ninputprintf(ninput char:);char:);scanf(%c,&cscanf(%c,&c);/*);/*输入字符输入字符输入字符输入字符c*/c*/c=(c=c=(c=a&ca&c=z)?c-32:c;/*大于大于54,xy54,xy6 6从左向右从左向右5,x5,x=大于等于大于等于5=4,x=y5=4,x=y6 6从左向右从左向右=小于等于小于等于5=4,x=y5=4,x3&x3&x=811 11从左向右从左向右|或或x5x51212从左向右从左向右!非非!(x5)!(x5)2 2从右向左从右向左49C语言程序设计pq!p!q p&q p|q110011100101011001001100逻辑运算真值表逻辑运算真值表(1 1)关系和逻辑运算符的关键是)关系和逻辑运算符的关键是TrueTrue(真)和(真)和FalseFalse(假)(假)(2 2)C C语言中,非语言中,非0 0为真,为真,0 0为假为假 50C语言程序设计关系表达式和逻辑表达式关系表达式和逻辑表达式o关系表达式关系表达式:用关系运算符将两个运算对:用关系运算符将两个运算对象(算术表达式、赋值表达式、关系表达式象(算术表达式、赋值表达式、关系表达式和逻辑表达式等)连接起来构成的式子和逻辑表达式等)连接起来构成的式子 a+3b+4(ab)(c=2)注:关系表达式的值是一个逻辑值,即注:关系表达式的值是一个逻辑值,即“真真”或或“假假”例例2.9:求下面关系表达式的值求下面关系表达式的值int a=0;double b=0.5,x=0.3;求a=x278int i=1,j=7,a;a=i+(j%4!=0);求a00251C语言程序设计o逻辑表达式逻辑表达式:用逻辑运算符将运算对象连用逻辑运算符将运算对象连接起来的式子接起来的式子 n逻辑表达式的值只能是逻辑表达式的值只能是“真真”或或“假假”n表示逻辑运算结果:以数值表示逻辑运算结果:以数值1代表代表“真真”,以数,以数值值0代表代表“假假”n判断是否为判断是否为“真真”:以非:以非0表示表示“真真”,以,以0表表示示“假假”!5的值是0(a=2)&(b=4)的值是1(a=0)|(b=2)的值是152C语言程序设计练习练习!a a&b a|b !a|b 4&0|2 53&2|8c&b+ca&c+ab)54C语言程序设计o请注意:请注意:在逻辑表达式中不是所有的逻辑运在逻辑表达式中不是所有的逻辑运算符都要被执行,只有在必须执行下一个逻算符都要被执行,只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该辑运算符才能求出表达式的解时,才执行该运算符运算符 例 a&b&c/只在a为真时,才判别b的值;只在a、b都为真时,才判别 c的值例 a|b|c/只在a为假时,才判别b的值;只在a、b都为假时,才判别 c的值例 a=1;b=2;c=3;d=4;m=1;n=1;(m=ab)&(n=cd)/m=?,n=?m=0,n=155C语言程序设计2.6.5 条件运算符条件运算符o格式:格式:n运算对象运算对象1?运算对象?运算对象2:运算对象:运算对象3 o功能:功能:n先判断先判断运算对象运算对象1的值是否为非的值是否为非0,如果是非,如果是非0,其值为运算对象,其值为运算对象2的值,否则为运算对象的值,否则为运算对象3的的值值 ab?a:b Y=X0?1:(x=0?0:-1)56C语言程序设计o说明:说明:n运算对象运算对象1、运算对象、运算对象2、运算对象、运算对象3可以是任可以是任意类型,一般运算对象意类型,一般运算对象1为关系或逻辑运算对象为关系或逻辑运算对象的式子,其类型可以相同,也可以不相同。的式子,其类型可以相同,也可以不相同。n条件运算符的优先级为条件运算符的优先级为13级级n条件运算符的结合性是从右向左结合的条件运算符的结合性是从右向左结合的57C语言程序设计oo条件表达式的求解过程为:先求解表条件表达式的求解过程为:先求解表达式达式1,若表达式的值为,若表达式的值为1(真),则(真),则求解表达式求解表达式2,并将其作为整个表达式,并将其作为整个表达式的值;如表达式的值为的值;如表达式的值为0(假),则求(假),则求解表达式解表达式3,并将其作为整个表达式的,并将其作为整个表达式的值。值。2.6.6 逗号运算符逗号运算符58C语言程序设计2.6.6 逗号运算符逗号运算符o定义:定义:用逗号把几个运算对象连接起来用逗号把几个运算对象连接起来 o格式:格式:n运算对象运算对象1,运算对象,运算对象2,运算对象,运算对象no功能:功能:n先计算运算对象先计算运算对象1的值,再计算运算对象的值,再计算运算对象2的值,的值,直到最后计算运算对象直到最后计算运算对象n的值的值 x=5*6,x+10 a=3,b=4,a+,b+,a+b 40 9 说明:说明:(1 1)逗号运算符的优先级最低。)逗号运算符的优先级最低。(2 2)逗号运算符的结合性是从左向右)逗号运算符的结合性是从左向右59C语言程序设计o请区分以下两个表达式,并计算请区分以下两个表达式,并计算x的值的值1)x=(a=3,6*a)2)x=a=3,6*a60C语言程序设计2.6.7求字节运算符求字节运算符sizeof sizeof的定义格式如下的定义格式如下(2)功能)功能测定某一种类型数据所占存储空间长度,结果是该类测定某一种类型数据所占存储空间长度,结果是该类型在内存中所占的字节数。括号内可以是该数据类型在内存中所占的字节数。括号内可以是该数据类型名或是该类型的变量名。型名或是该类型的变量名。sizeofsizeofsizeofsizeof(数据类型名数据类型名数据类型名数据类型名)或或或或 sizeofsizeofsizeofsizeof(变量名变量名变量名变量名)612.7 回到工作场景回到工作场景 62C语言程序设计o通过对通过对2.22.6节的学习,我们了解了各种数据类型、节的学习,我们了解了各种数据类型、运算符以及表达式的使用方法。对于工作场景所提的问运算符以及表达式的使用方法。对于工作场景所提的问题,很容易在上文找到答案。现在让我们回过头来完成题,很容易在上文找到答案。现在让我们回过头来完成本章开始的工作场景部分。本章开始的工作场景部分。o(1)因为原变化规则为先将个位上的数字逆序,故我因为原变化规则为先将个位上的数字逆序,故我们会想到将变化后的数字逆序。们会想到将变化后的数字逆序。o(2)因为变化规则是将各位上的数字加因为变化规则是将各位上的数字加5后余后余10,故,故我们要将各位数字减我们要将各位数字减5后再余后再余10,但由于若将各位数字,但由于若将各位数字直接减直接减5后再余后再余10会得到负值,故我们应先将各位数字会得到负值,故我们应先将各位数字加加10后再减后再减5余余10,即:加,即:加5余余10。63