二义性分为两种

  • 显式二义性
    a = ++a+++b
    # C++中会被编译器理解为++(a++)+y, 会引发编译异常
  • 隐式二义性
    b = ++a + (++a) + (++a)
    printf("%d %d %d", a, ++a, --a)
    #  表达式或多参函数中连续对同一变量自增自减, 在不同系统中得到的结果不一样

    Golang中不允许自增自减出现在运算和函数传参中, 只能单独使用-.-