printf函数的参数压栈顺序有关问题

printf函数的参数压栈顺序问题
程序员面试宝典上有一道关于printf函数的参数计算顺序的问题,如下注释中的内容所示

#include <stdio.h>
int main(){
    int n = 'c';
    printf("%d,%d,%d\n",n,++n,n);
}
/*int main(){
    int arr[]={6,7,8,9,10};
    int *ptr=arr;
    *ptr+++=123;
    printf("%d,%d\n",*ptr,*++ptr);
    return 0;
}*/

答案是8,8,即printf函数参数在计算时是从右边开始的,按照这个解释,在没有注释的地方,我加了两行,我本来想的结果是
100,99,99,但是计算的结果是100,99,100,这是为什么?

------解决思路----------------------
你被骗了 
题目是错的

参数的压栈顺序是压栈顺序
和副作用没什么关系 
你应该去看看本版的置顶帖
------解决思路----------------------
http://bbs.csdn.net/topics/370153775