printf与++的puzzle

时间:2023-03-09 01:35:00
printf与++的puzzle

int b = 0;

int c = 0;

int main(int argc, const char *argv[])

{

printf("%d %d %d %d %d",b,b++,b,++b,b);

printf("%d %d %d %d %d",c,++c,c,c++,c);

return 0;

}

结果为 2 1 1 1 0   2 2 1 0 0

这个能够理解,由于printf是从后往前进行的,

而:

int main(int argc, const char *argv[])

{

    int b = 0;

    int c = 0;

printf("%d %d %d %d %d",b,b++,b,++b,b);

printf("%d %d %d %d %d",c,++c,c,c++,c);

return 0;

}

实验结果为 2 1 2 2 2 2 2 2 0 2

这是为什么?