(笔记)不同数据间的混合运算

来源:互联网 发布:淘宝收藏的宝贝打不开 编辑:程序博客网 时间:2024/04/29 03:12
初始化不是在编译阶段完成的(静态存储变量和外部变量的初始化是在编译阶段完成)而是在程序运行时执行本语句时赋初值的,相当于一个赋值语句。例如:        int a=3;        相当于:            int a;            a=3;        又如:            int a, b, c=5;        相当于:            int a, b, c;            c=5;
整型(包括intshortlong)和浮点型(包括floatdouble)可以混合运算。字符型数据可以与整型通用,因此,整型、浮点型、字符型数据间可以混合运算。例如:        10+’a’+1.5-8765.1234*’b’        //最后表达式的类型是double类型  格式申明符:lf规定:在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按下图所示。

这里写图片描述

说明:1. 运算前,charshort类型的数据强制转换成int类型2. 运算前,float类型的数据强制转换成double类型(有效位被扩大,运算时精度提高)3. 从下往上,表示数据数据转换的优先级。   比如:int 和 doubule 运算时统一将它们的数据类型转换成double
例题:求下面算术表达式的值(1)x+a%3*(int)(x+y)%2/4,设x=2.5, a=7, y=4.7//先算(x+y) = 7.2  强制转换后 7// * % 优先级相同,算数运算符的结核性:从左到右//a % 3 * 7 % 2 / 4 = 0//x 为 float型,运算时先转化为double。// x + 0 = 2.5//最后的格式类型为double类型,格式声明符lf(2)(float)(a+b)/2+(int)x%(int)y,设a=2, b=3, x=3.5, y=2.5//(float)(a+b)/2,运算后为double类型//(int)x%(int)y = 1//2.5 + 1 = 3.5 格式为double型,格式声明符lf
0 0