kotlin 数字操作符运算结果不对的问题

    data class M(val int: Int?)

    @Test
    fun test() {
        val m1 = M(0)
        val m2 = M(1)
        val m3 = M(0)

        val i = (m1.int ?: 0) + (m2.int ?: 0) + (m3.int ?: 0)

        val j = (m1.int ?: 0)
                    +(m2.int ?: 0)
                    +(m3.int ?: 0)

        println(i)
        println(j)
    }

打印结果i j分别是1和0,百思不得骑姐。
后来发现kotlin是将val j = (m1.int?:0)当做一行,直接将m1.int赋值给了j
+(m2.int?:0)(m3?:int?:0)当做另起一行了。

你要是++(int)当做一行还能理解,+(int)居然不报错是为啥。。谁加谁啊
以后碰到运算j这种情况,在最外面多加个括号吧

你可能感兴趣的:(kotlin 数字操作符运算结果不对的问题)