这个问题不是讨论了很多次了吗?这个和编译器有关的。
关于楼主的问题,只说在楼主使用的编译器下,我感觉程序是这样执行的:
printf()函数参数从右往左逐个入栈,先++i,i为9,再(++i,i) i变为10,
但是入栈的时候不执行输出,也就是printf()函数先把要输出的数逐个入栈,然后再把入栈的数出栈输出,
这样用i替换占位符的时候就都是10了。
关于楼主的问题,只说在楼主使用的编译器下,我感觉程序是这样执行的:
printf()函数参数从右往左逐个入栈,先++i,i为9,再(++i,i) i变为10,
但是入栈的时候不执行输出,也就是printf()函数先把要输出的数逐个入栈,然后再把入栈的数出栈输出,
这样用i替换占位符的时候就都是10了。