关于编译器编译顺序的一个小问题...
int t;
char buf[]={"abc"};
for(t=0;buf[t]!='\0';t++)
printf("%d ",buf[t]);
printf("\n");
t=0;
printf("%d %d %d",buf[t],buf[++t],buf[++t]);
char buf[]={"abc"};
for(t=0;buf[t]!='\0';t++)
printf("%d ",buf[t]);
printf("\n");
t=0;
printf("%d %d %d",buf[t],buf[++t],buf[++t]);
想说明一个简单的问题,最后一行代码往往不能达到想要的效果,至少在我的g++下面不能。
原因在于编译器在编译的时候不一定是按照从左到右的顺序处理,比如,g++是按照从又往左的顺序。
那么,在书写代码的过程中应该避免最后一行那样的写法,一方面是为移植性着想,一方面是为了避免难以发现的错误。
反正我以后不会在printf里头写++t了。
over...