文档详情

测绘程序设计基础(VC++net)第二章 C++语言编程基础.ppt

发布:2017-07-27约字共67页下载文档
文本预览下载声明
4.赋值表达式与复合赋值表达式 赋值表达式的格式为: 变量 = 表达式 例如:x=5+6;a=b=c=d+1; 在C++中,所有的双目算术运算符和位运算符均可与赋值运算符组合成一个单一运算符,称为复合赋值运算符。包括以下10个: + = – = * = / = % = = = = | = ^ = 复合赋值运算符的要求与格式与赋值运算符完全相同,表示为: 变量 复合赋值运算符 表达式 它等同于 变量 = 变量 运算符 表达式 例如:x+=5 等同于:x=x+5 ok 2.5.3算术类型转换和赋值类型转换 1 不同类型数据的混合运算 2 赋 值 类 型 转 换 ok 运算过程中,当某个二元运算符两边的操作数类型不同但属于类型相容时,系统先将精度低的操作数变换到与另一操作数精度相同,而后再进行运算。 所谓类型相容,指的就是类型不同但系统可以自动进行转换。 当赋值号的左值和右值类型不一致但属于类型相容时,由系统自动进行类型转换。 1.不同类型数据的混合运算 char short int long unsigned char unsigned short unsigned int unsigned long float double long double 数据类型转换方向 ok 具体规则如下: (1)字符可以作为整数参与数值运算,整数值为其ASCII码。 (2)操作数为字符或短整型时,系统自动变换成整型。 (3)操作数为实型时,系统自动变换成双精度型。 (4)其余情况,当两操作数类型不同时,将精度低(或表示范围小)的操作数的数据类型变换到与另一操作数类型相同再进行运算 例如有变量: char c1, c2; int i1, i2; float x1, x2; 则表达式 x2=c1*i1+c1*x1+c1*c2 的求值过程为:将c1转换成整型,完成c1*i1,结果表示为t1;将c1和x1均转换成双精度型,完成c1*x1,结果表示为t2;将c1和c2均转换成整型,完成c1*c2,结果表示为t3;然后t1转换成双精度型,完成t1+t2,结果表示为t4;将t3转换成双精度型,完成t4+t3,最后结果转为单精度型赋给x2。 2.赋值类型转换 2.5.3结束 系统自动进行类型转换规则: 1、实型数赋给整形变量:取整;注意溢出; 2、整型数赋给实型变量:先转换为实型数; 3、字符型数赋给整形变量:ASCII码为依据;分为两种情况:符号位是0或1时不同; 若符号位为1,则低位字节不变,高位字节全部置1再赋值。 4、绝对值较大的数赋给表达范围较小的数据类型时,注意溢出; 2.4.4 强制类型转换运算符 ok 其格式为: (type) 表达式 //形式一 或 type (表达式) //形式二 作用:将表达式强制转换为type类型, 但表达式的值及其类型不变。 任意数据类型 赋值运算中,当左值与右值类型不一致时, 系统将按照左值的类型,自动进行强制转换。 例如: 设有以下定义 double x=2.3,y; int i=2,j; (1) j 2.3 x 2.3 … … 2 2 (1) j=x; (2) y=i; 由系统按 左值j 、y 类型自动 完成强制 转换功能 (2) y 2 i 2 … … 2.0 2.0 2.4.4 强制类型转换运算符 2.4.5 求值次序与副作用 ok 在符合优先级和结合性的前提下,C语言的标准对表达式中各操作数的求值次序没有做统一规定。 编译器为提高代码质量,在不影响优先级和结合性的前提下也要对操作数的访问次序作调整。在安排顺序时,如果某个操作数经历了求值运算,那么这个求值可能影响到其他操作数的值,这时就会产生副作用。 例如,设有int a=2, b=5, c; 对表达式c=a*b+(++a)+(b=10) 三个同级运算中,是先算a*b,还是++a,还是b=10,其次再算哪个?显然求值次序不同将导致结果不同。 2.4.6 语句 1 表达式语句:表达式; 2 空语句: ; 3 复合语句: { //若干语句 } 4 流程控制语句:实现三种基本结构的语句; 2.5结束 2.5 基本C++语法格式与编程规范 C++是严格区分大小写的 C++是一种自由格式的语言 用C++语言编程时,程序的书写非常自由,甚至可以把整个函数体全部书写在一行上。但这样做,对人来说,如果程序稍长一点,就难理解了。 2.5 基本C++语法格式与编程规范 书写基本原则如下:
显示全部
相似文档