c语言中a++和++a有什么区别_a+++a和a+a++结果为什么不一样

首先为大家举两个栗子引出今天的问题:

let a = 1
console.log(a+++a)
//输出3

let a = 1
console.log(a+a++)
// 输出2

那么造成这两个结果差异的原因是什么呢?这就涉及到自增运算符 a++和++a的区别以及运算符的优先级了。

首先为大家解释a++和++a的区别:

let a = 1
console.log (b = ++a) // 输出结果为2 a为2

let a = 1
console.log(b = a++) //输出结果为1 a为2

因此我们可以得到如下结论:++a是在运算之前a+1已经完成,a++是需要在运算完成之后a+1才执行。

第二是关于运算符的优先级,可以参考MDN关于优先级的相关知识,常用的大致如下:

逗号(,) < 赋值(=) < 逻辑或(||) < 逻辑与(&&) < 相等判断(===) < 大小判断(>,<) < 加减 < 乘除 < typeof < 前置递减递增(++...) < 逻辑非(!...) < 后置递减递增 (...++) < new < 成员访问(x[y]或x.y) < 小括号

那么回归到最初我们讲述的栗子中:

let a = 1
console.log(a+++a)
/* a+++a中一共有三个“+”,根据优先级我们知道a++的优先级更高,
因此先得到a++的结果为1;之后a的值增加1,即为2;
因此a+++a的结果为3 */


let a = 1
console.log(a+a++)
/*运算从左往右开始,首先是a的值为1,因为a++之前并没有自增运算,因此在a++时,a的值仍然为1;
因此结果就是(1,1)相加,结果为2.*/

资料参考饥人谷前端体系课课程

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值