第3章表达式 纵向箭头方向表示必定要进行的转换, short型、 char型数据必定先转换成int型,foat型数据必定先转换 成 double型,再进行运算 横向箭头方向表示类型自动转换的方向。由低向 高转换,int型最低, double型最高。int型与 usingned型数 据进行运算,int型转换成 unsigned;int型与long型数据进 行运算,int型转换成long型;int型与 double型数据进行运 算,int型转换成 double型。其它类推。 这种转换是一种保值映射,在转换中数据的精度不 受损失
第 3章 表 达 式 纵向箭头方向表示必定要进行的转换, short型、 char型数据必定先转换成int型, float型数据必定先转换 成double型, 再进行运算。 横向箭头方向表示类型自动转换的方向。由低向 高转换, int型最低, double型最高。int型与usingned型数 据进行运算, int型转换成unsigned; int型与long型数据进 行运算, int型转换成long型; int型与double型数据进行运 算, int型转换成double型。其它类推。 这种转换是一种保值映射, 在转换中数据的精度不 受损失
第3章表达式 (2)强制转换。 强制类型转换通过类型转换运算进行。 格式:(类型名)(表达式) 将表达式的类型强制转换成类型名指定的类型。 如: float x, y; (int)(x+y)将表达式x+y的值强制转换成整型 强制类型转换在将高类型转换为低类型时,数据精度 受损,是一种不安全的转换。强制类型转换是暂时性的, 次性的,并不永久改变所转换表达式的类型 如:inta; ( double)a为双精度,a依然为整型量
第 3章 表 达 式 (2) 强制转换。 强制类型转换通过类型转换运算进行。 格式: (类型名)(表达式) 将表达式的类型强制转换成类型名指定的类型。 如: float x, y; (int) (x+y)将表达式x+y的值强制转换成整型 强制类型转换在将高类型转换为低类型时, 数据精度 受损, 是一种不安全的转换。强制类型转换是暂时性的, 一次性的, 并不永久改变所转换表达式的类型。 如: int a; (double) a为双精度, a依然为整型量
第3章表达式 例3-1表达式计算。 (1) float x=2.5,y=4.7;inta=7 计算x+a%3*(int)(xy)%2/4 ⑦①④③②⑤⑥ ①a%3等于1。 ②x+y等于72。 ③(int)(x+y)等于7 ④a%3*(int)(x+y)等于7。 ⑤a%3*(int)(x+y)%2等于1 ⑥a%3*(int)(x+y)%2/4等于0。 ⑦x+a%3*(int)(x+y)%2/4等于2510,结果为2.5 第二项将由整型自动转换为双精度型进行运算,计算结果为双精度型
第 3章 表 达 式 例3 –1 表达式计算。 (1) float x=2.5, y=4.7; int a=7; 计算x + a%3*(int)(x+y)%2/4 ⑦ ① ④ ③ ② ⑤ ⑥ ① a%3等于1。 ② x+y等于7.2。 ③(int)(x+y)等于7。 ④ a%3*(int)(x+y)等于7。 ⑤ a%3*(int)(x+y)%2等于1。 ⑥ a%3*(int)(x+y)%2/4等于0。 ⑦ x+a%3* ( int ) ( x+y ) %2/4 等 于 2.5+0, 结果为 2.5 。 第二项将由整型自动转换为双精度型进行运算, 计算结果为双精度型
第3章表达式 (2)inta=2,b=3; float x-3.5,y=2.5 计算(foat)(a+b)/2+(int)x%(int)y ①③⑦ ①a+b等于5。 ②(foat)(a+b)等于5.0,强制转换成foat型 ③(foat)(a+b)/2等于50/20,结果为2.5 ④(int)x等于3,强制转换成int型 ⑤(int)y等于2,强制转换成nt型。 ⑥(int)x%(int)y等于1。 ⑦(foat)(a+b)/2+(int)x%(int)y等于2.5+1.0,结 果
第 3章 表 达 式 (2) int a=2, b=3; float x=3.5, y=2.5; 计算(float)(a+b)/2 +(int)x%(int)y ② ① ③ ⑦ ④ ⑥ ⑤ ① a+b等于5。 ② (float)(a+b)等于5.0, 强制转换成float型。 ③ (float)(a+b)/2等于5.0/2.0, 结果为2.5。 ④ (int)x等于3, 强制转换成int型。 ⑤ (int)y等于2, 强制转换成int型。 ⑥ (int)x%(int)y等于1。 ⑦ (float)(a+b)/2+(int)x%(int)y等于2.5+1.0, 结 果 为3.5(双精度型)
第3章表达式 ()int 1=3; float f1.0; double d=2.3; 计算10+a+i*fd ①a转换成97,10+a'等于107 ②i,f转专换成双精度型,i聳等于3.0 ③107转换成双精度型,10+a+i*f等于1100。④ 10+a+i*fd等于107.7
第 3章 表 达 式 (3) int i=3; float f=1.0; double d=2.3; 计算10 +′a′+i*f-d ① ③ ② ④ ① ′a′转换成97, 10+′a′等于107。 ② i, f转换成双精度型, i*f等于3.0。 ③ 107转换成双精度型, 10+′a′+i*f等于110.0。④ 10+′a′+i*f-d等于107.7