5-2-2 C中printf计算参数时是从右到左压栈的
#include <stdio.h> int main (int argc, char **argv) { int b = 3; int arr[] = {6,7,8,9,10}; int *ptr = arr; // *(ptr++) += 123; // printf ("%d,%d ",*ptr,*(++ptr)); printf ("%d,%d ",*ptr,*(ptr++)); return 0; } /* ----- End of main() ----- */ 输出 7,6
可实际上是:先取ptr指向的数组元素的值,再自加。并且去掉括号即*ptr++,它的结果完全相同。
#include <stdio.h> int main (int argc, char **argv) { int b = 3; int arr[] = {6,7,8,9,10}; int *ptr = arr; *(ptr++) += 123; printf ("%d,%d ",*ptr,*(++ptr)); // printf ("%d,%d ",*ptr,*ptr++); return 0; } /* ----- End of main() ----- */ 输出 8,8