首页 > num1++ % 4 + 6 * 2的运算结果不应该是13吗?

num1++ % 4 + 6 * 2的运算结果不应该是13吗?

var num1 = 24;
var myresult = num1++ % 4 + 6 * 2;
console.log(myresult);
num1先求余数运算的结果是0,然后再自增1,就是1,再加12,结果应该是13啊?
为何实际结果是12呢?
num1%4的值是0,num1++%4的值不应该是1吗?要不然num1++有自增吗?


num1++是一个表达式,这个表达式的值是num1原来的值,所以这个表达式的值求余为0,于是num1++%4这个表达式的值就是0,0+6*2是12,所以这个算完后,myresult是12,num1是自增了1

并且不是整个表达式算完才自增,num1++算完就自增了,只是num1++这个表达式的值还是原来的值,用js演示一下,如果是像有人说的全部算完才计算的,那么下面的应该输出 0和12,但实际是1和12

        var num1=0;
        function cheack(n){
            console.log(n);
            return 0;
        }
        console.log(num1++ % 4 +cheack(num1)+ 6 * 2);

num1++ 代表先赋值后自增
++num1 代表先自增后赋值
这里 num1++ % 4 + 6 * 2 先赋值 0 给表达式后 num1再自增,即 为12.
如果是++num1 % 4 + 6 * 2 num1先自增,后赋值1给表达式,结果为13


num1在整个表达式运算完毕才自增,即给myresult赋值完才自增。


这个题目涉及两个概念
1、运算符优先级:
++(后置递增) > %(取模) > *(乘) > +(加)
运算符优先级
2、后置递增:
变量先参与运算再自增

所以实际上是这样的:

(num1 % 4) + (6 * 12)
num1 = num1 + 1
【热门文章】
【热门文章】