文档详情

2.2常用的运算符和表达式.ppt

发布:2016-11-22约6.86千字共50页下载文档
文本预览下载声明
5、复合的赋值运算符 在赋值符“=”之前加上其它二元运算符可构成复合赋值符。如:+=,-=,*=,/=,%= 例如: a-=15 等价于a=a-15 (1)将“=”左边的全部移到“=”右边表达式的左边: =a-15 (2)在“=”左边补上a a=a-15 x*=y-17 等价于x=x*(y-17) (1)将“=”右边的表达式加上括号。 x*=(y-17) (2)将“=”左边的全部移到“=”右边表达式的左边: =x*(y-17) (3)在“=”左边补上x x=x*(y-17) 复合赋值符的优先级和赋值运算符相同(14级) 结合性也相同。 例1: main( ) { int x=3,y=5; x*=x+y; printf(“x=%d\n”,x); } 运行结果: x=24 6、各类数值型数据之间的混合运算 在C程序中,常常会出现不同类型变量混合运算的情况,需将不同类型的数据转换成相同类型的数据,再进行运算。 类型的转换有两种情况: 自动转换和强制转换。 转换规则如图所示: 自动转换发生在不同数据类型的数据混合运算时,由编译系统自动完成。规则如下: (1)若参与运算量的类型不同,则先转换成同一类型,然后再进行运算; (2)转换按数据长度增加的方向进行,以保证精度不降低; (3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再计算; (4)char型和short型参与运算时,先转换成int型。 7、强制类型转换 (类型说明符)表达式 功能:把表达式的运算结果强制转换成类型说明 符所表示的类型。 说明:这里的小括号:( ),称为强制类型转换 运算符。 例如: (float)x 把x转换为实型。 (int)(a-b) 把a-b的结果转换为整型。 例2:实现保留小数点后2位有效数字。 main( ) { float a=12.3456; a=(int)(a*100+0.5)/100.0; printf(“a=%f”,a); getch( ); } 程序运行结果为: a=12.350000 案例分析: 1、由于(int)的作用, (int)(a*100+0.5)运算的结果为整型1235; 2、除100.0运算时自动转换为实型12.350000; 说明: 1、在强制类型转换时,只得到一个所需类型的中间变量,原来变量的类型没有发生变化; 2、(int)(x+y)和(int)x+y不同:前者是将x和y相加后,把结果转换为整型,而(int)x+y是把x转换成整型后再与y相加。 例3: main( ) { float a=12.34; int b; b=(int)a; printf(%d,%f,b,a); getch(); } 程序运行结果:12,12.340000 b是int型,a是float类型并不改变。 3、无论是强制转换或是自动转换,如果要转换的量超过了转换后类型的表示范围,将出现溢出错误或不可预料的结果。如: main( ) { int a; float b=123456; a=b; printf(a=%d,a); getch(); } 运行结果:-7616 五、逗号运算符和逗号表达式 1、逗号运算符: “,” 2、逗号表达式: 用逗号把两个表达式连接起来的式子,称为逗号表达式。 一般形式为:表达式1,表达式2 求值规则:从左向右依次计算两个表达式的值,最后一个表达式是逗号表达式的值。 3、优先级 逗号运算符为左结合性,优先级15级。 如: 逗号表达式:x=3,y=x+3的值是6; 赋值表达式:z=(x=3,y=x+3)的值是6; 逗号表达式:z=(x=3),(y=x+3)的值是6。 说明: (1)逗号表达式可以嵌套,即逗号表达式中的表达式1和表达式2还可以是逗号表达式; 表达式1,表达式2……,表达式n (2)表达式n的值是整个逗号表达式的值; 六、条件运算符 1、条件运算符: “?:” 2、作用:是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两个表达式中的一个。 3、一般形式为: 表达式1?表达式2:表达式3 在运算中,首先对第一个表达式进行检验,如果为
显示全部
相似文档