------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
取余运算
%
参与运算的必须是整数 10%2 20%3
注意:
m%n 求余,相当于m/n 获取余数
(1)n等于0 无意义
(2)m等于0 结果为0
(3)m>n 正常求余 如:8%3= 2
(4)m<n 结果是m 如:2%4= 2 1%4 = 1 3%8=3
2)运算结果的正负性取决于第一个运算数,跟后面的运算数无关
算术运算中类型转换问题
类型转换分为:隐式数据类型转换和 显示数据类型转换
1)自动转换(隐式转换):
自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:
1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转 成long型后再进行运算。3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成 double型,再作运算。
4)char型和short型参与运算时,必须先转换成int型。5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分 按四舍五入向前舍入。
2)强制类型转换(显示转换):
强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符) (表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
(float) a; /* 把a转换为实型*/
(int)(x+y); /*把x+y的结果转换为整型 */
显示类型转换的方法是在被转换对象(或表达式)前加类型标识符,其格式是:(类型标识符)表达式
在使用强制转换时应注意以下问题:
1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。 2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
表达式语句一定有返回值
思考&实现:
分析这句代码:int a=b=c=d=10; 是否正确?为什么?
应该是不正确的。因为赋值语句是从右向左的顺序结合,题目中只定义的a,却没有定义b,c,d,没有定义的变量是不能使用的。
自增自减的时候,注意变量的值和表达式的值的变化不同,分清楚表达式的式的与变量值的变化关系。
优先级
优先级是第2级
右结合
编译器对程序编译时,从右到左可能多地将字符组合成一个运算符或标识符,因此i+++j++等效于(i++)+(j++),两个“++”作用的对象都是变量,这是合法的;
注意:不管“++”在前还是在后,最后变量的值都会+1
sizeof运算符
用法:sizeof(常量/变量)
sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小 由操作数的类型决定。
注意:sizeof()不是一个函数,而是一个运算符。
//当sizeof后面的操作数是常量或是变量那么后面小阔号是可以省略的
逻辑运算符
逻辑运算符的短路问题
与短路:&&只要第一个条件表达为假那么后面的条件表达就不参与运算了 或短路:|| 只要第一个条件表达式为真那么后面的条件表达式就不参与运算了
优先级和结合性的表格,一会上图