JAVA和C++比教学 :算式执行顺序
来源:互联网 发布:智慧工地软件加盟 编辑:程序博客网 时间:2024/05/25 23:27
1、JAVA
java中常见的运算符执行顺序如下
在java中,计算的时候都是优先级高的先执行。优先级相同的遵循其关联方向。
详细的优先级表格如下
优先级 操作符 含义 关联性 用法 ----------------------------------------------------------------1 [ ] 数组下标 左 array_name[expr] . 成员选择 左 object.member ( ) 方法参数 左 method_name(expr_list) ( ) 实例构造 左 class_name(expr_list) ++ 后缀自增 左 lvalue++ -- 后缀自减 左 lvalue-- 2 ++ 前缀自增 右 ++rvalue -- 前缀自减 右 --lvalue ~ 按位取反 右 ~expr ! 逻辑非 右 !expr + 一元加 右 +expr - 一元减 右 -expr 3 ( ) 强制转换 右 (type)expr new 对象实例化 右 new type() new type(expr_list) new type[expr] 4 * 乘 左 expr * expr / 除 左 expr / expr % 求余 左 expr % expr 5 + 加 左 expr + expr - 减 左 expr - expr + 字符串连接 左 strExpr + strExpr 6 >> 有符号右移 左 expr >> distance >>> 无符号右移 左 expr >>> distance 7 < 小于 左 expr < expr <= 小于等于 左 expr <= expr > 大于 左 expr > expr >= 大于等于 左 expr >= expr instanceof 类型比较 左 ref instanceof refType == 等于 左 expr == expr != 不等于 左 expr != expr 8 & 整数按位与 左 integralExpr & integralExpr & 布尔与 左 booleanExpr & booleanExpr 9 ^ 整数按位异或 左 integralExpr ^ integralExpr ^ 布尔异或 左 booleanExpr ^ booleanExpr 10 | 整数按位或 左 integralExpr | integralExpr | 布尔或 左 booleanExpr | booleanExpr 11 && 逻辑与 左 booleanExpr && booleanExpr 12 || 逻辑或 左 booleanExpr || booleanExpr 13 ? : 条件运算 右 booleanExpr ? expr : expr 14 = 赋值 右 lvalue = expr *= 乘赋值 右 lvalue *= expr /= 除赋值 右 lvalue /= expr %= 模赋值 右 lvalue %= expr += 加赋值 右 lvalue += expr += 字符串连接赋值 右 lvalue += expr -= 减赋值 右 lvalue -= expr <<= 左移赋值 右 lvalue <<= expr >>= 有符号右移赋值 右 lvalue >>= expr >>>= 无符号右移赋值 右 lvalue >>>= expr &= 整数按位与赋值 右 lvalue &= expr &= 布尔与赋值 右 lvalue &= expr |= 整数按位或赋值 右 lvalue |= expr |= 布尔或赋值 右 lvalue |= expr ^= 整数按位异或赋值 右 lvalue ^= expr ^= 布尔异或赋值 右 lvalue ^= expr
所以我们再来看这个最著名的考题
int i =2
i = i++ + ++i
后缀自增的++的运算级最高
所以第一步运算的结果是
i=3
i = 2 + ++i
第二步运算的结果是
i = 4
i =2+4
所以最后输出的答案是6
2、C++
在C语言里,++i返回的是左值,左值是可以继续运算的。而++i返回的是右值。右值是const的,不能再被改变。所以,(i++)++之类的表达式通不过编译的。在java中,i++和++i产生的都是const值,所以就算是(++i)++也通不过编译,
赋值操作是左结合的,也就是说a=b=c是先算b=c,然后再运算a=b的。而+操作时右结合的,也就是说
a+b+c是先算a+b,再算(a+b)+c的。一般来说,算术运算都是左结合的。C++的
0 0
- JAVA和C++比教学 :算式执行顺序
- JAVA C# C/C++比教学:泛型
- JAVA C# C/C++之比教学:访问控制机制
- JAVA C# C/C++之比教学:编译机制
- JAVA C# C/C++之比教学:继承
- java中return和finally执行顺序
- java中类加载和执行顺序
- Java return和finally执行顺序
- Java成员变量初始化和执行顺序
- jsp中js和java执行顺序
- java程序的执行顺序和赋值顺序
- 执行计划和执行顺序
- java执行顺序测试
- JAVA 执行 顺序
- java执行顺序
- JAVA程序执行顺序
- Java多线程顺序执行
- Java执行顺序
- POJ 1753 - Flip Game (位运算 + BFS)
- 《GeekBand》STL与泛型编程02
- Visual Stdio C++ 编译器 编译 (GSL) GNU Scientific Library 的方法介绍(8)
- MATLAB转换TXT中灰度值数据格式,将灰度数据输出为图像
- neuraltalk2代码解析-(3)-LanguageModule.lua
- JAVA和C++比教学 :算式执行顺序
- nginx编译安装
- 167. Two Sum II - Input array is sorted**
- C++里面的const是怎么实现的?
- 详解显示意图和隐式意图
- httpd编译安装
- 传递闭包
- Android蓝牙(一)
- python3 标准类型