关于编译器编译顺序的一个小问题...

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]);

想说明一个简单的问题,最后一行代码往往不能达到想要的效果,至少在我的g++下面不能。

原因在于编译器在编译的时候不一定是按照从左到右的顺序处理,比如,g++是按照从又往左的顺序。

那么,在书写代码的过程中应该避免最后一行那样的写法,一方面是为移植性着想,一方面是为了避免难以发现的错误。

反正我以后不会在printf里头写++t了。

over...

posted @ 2009-02-01 00:31  DosXP  阅读(474)  评论(0编辑  收藏  举报