🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 算术运算符 ### 算术运算符 |名称|符号|说明| |--|--|--| |加法运算符|`+`|双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有左结合性。| |减法运算符|`-`|双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合 性。| |乘法运算符|`*`|双目运算符,具有左结合性。| |除法运算符|`/`|双目运算符,具有左结合性。 **参与运算量均为整型时,结果也为整型,舍去小数。** 如果运算量中有一个是实型,则结果为双精度实型| |求余运算符 (模运算符)|`%`|双目运算符,具有左结合性。要求参与运算的量均为整型,不能应用于float或double 类型。求余运算的结果等于两数相除后的余数,整除时结果为0。| - 整数除于整数,求出来的结果依然是整数 - 浮点型赋值给整型会损失小数部分 - %两侧必须都为整数 - **利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反** ### 结合性和优先级 - 结合性: 从左到右 - 优先级 + `* / %` 优先级大于 `+ -` + 优先级相同则左结合计算 ``` 3*5/3+18 先算3*5 然后再算除3 最后结果再+18 ``` ### 算术运算的注意点 - 1. 自动类型转换 ``` int a = 10.6; int b = 10.5 + 1.7; ``` - 2. 自动将大类型转换为了小类型,会丢失精度 自动类型提升 ``` int b = 10.5 + 10; ``` - 3. 将右边的10提升为了double类型 ``` double b = 1.0 / 2; // 解决除法的精度问题 ``` - 4. 强制类型转换 ``` double a = (double)1 / 2; double b = (double)(1 / 2); ``` ## 求余运算符 ### 求余运算注意事项 - 参与运算的必须是整数 + 例如: `10%2` `20%3` + 错误写法: `12.3%3` ``` 10 % 2 = 0 // 因为 10 可以被2整除, 没有余数 10 % 3 = 1 // 因为 10除以3余1, 所以结果为1 ``` - **注意** `m% `求余,相当于`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 - 运算结果的正负性取决于第一个运算数,跟后面的运算数无关 ``` 10 % 3 = 1 -10 % 3 = -1 10 % -3 = 1 ```