一个关于指针的小疑点. 输出的结果好奇怪.

一个关于指针的小问题... 输出的结果好奇怪...

#include <stdio.h>
int main(void) 
{
static  char a[ ]="language";  
char *ptr=a;
printf("%c, %c, %c", *ptr++, *ptr++, *ptr++);

return 0;
}

请问大侠们我这结果怎么是nal, 而不是我想的lan呢???
我用的是C-Free... 好纠结呀... 是什么原因呢..
不是刚开ptr指向的是l, 进一个后第二个输出应该是a呀... 啊受不鸟...
一个关于指针的小疑点. 输出的结果好奇怪.

------解决方案--------------------
printf的计算顺序是从后往前的,即从右往左的 
------解决方案--------------------
这个关系到函数压栈顺序和计算顺序

但本质上,这是未定义行为,结果是随编译器会变的,不可作为参考

详见置顶帖表达式求值顺序