Dart测验代码输出疑惑:为何结果是1而非6?
Dart代码输出解析
先看这段代码的执行流程:
int var1 = 5; int var2 = 6; if ((var2 = 1) == var1) print(var2); else print(var2++);
- 赋值操作优先于比较:
(var2 = 1)是赋值语句,不是相等比较(相等比较是==)。这个操作会把var2的值从6改成1,同时整个赋值表达式的结果是被赋予的值——1。 - 条件判断结果:用赋值后的结果1和
var1(值为5)比较,1 == 5不成立,所以进入else分支。 - 后置自增的执行逻辑:
else里的var2++是后置自增运算符,规则是先使用变量当前的值,再对变量进行+1操作。此时var2的值是1,所以先把1传给print函数输出,之后var2才会变成2,但输出的已经是1了。
这就是为什么最终输出是1,而不是你预期的6。
内容的提问来源于stack exchange,提问作者Amr Emara
相关产品推荐
相关产品推荐

