这个结果在不同的编译器上都不同,属于c语言的未定义行为。原因在于,函数参数的求值顺序,也就是先计算a++还是先计算++a,这个在c语言中没有规定,不同编译器可以有不同的顺序。不信你可以多换几个编译器,结果不一样。
a++是先执行表达式后再自增,执行表达式时使用的是a的原值。 ++a是先自增再执行表达示,执行表达式时使用的是自增后的a。打印的值为2和3