一个关于指针的小疑点. 输出的结果好奇怪.
一个关于指针的小问题... 输出的结果好奇怪...
请问大侠们我这结果怎么是nal, 而不是我想的lan呢???
我用的是C-Free... 好纠结呀... 是什么原因呢..
不是刚开ptr指向的是l, 进一个后第二个输出应该是a呀... 啊受不鸟...
------解决方案--------------------
printf的计算顺序是从后往前的,即从右往左的
------解决方案--------------------
这个关系到函数压栈顺序和计算顺序
但本质上,这是未定义行为,结果是随编译器会变的,不可作为参考
详见置顶帖表达式求值顺序
#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的计算顺序是从后往前的,即从右往左的
------解决方案--------------------
这个关系到函数压栈顺序和计算顺序
但本质上,这是未定义行为,结果是随编译器会变的,不可作为参考
详见置顶帖表达式求值顺序