有一例題如下:
#include <stdio.h>
#include <conio.h>
int main(void)
{
int i[]={100,200,300,400,500};
int *p=i;
printf("*p++=%d\n",*p++);
printf("*p=%d\n",*p);
printf("*++p=%d\n",*++p);
printf("*p=%d\n",*p);
printf("++*p=%d\n",++*p);
printf("*p=%d\n",*p);
getch();
return 0;
}
答案是:
*p++=100
*p=200
*++p=300
*p=300
++*p=301
*p=301
這和遞增運算子++的看法有關。
例如 int i,j;
i=100;
j=i++;
則j=100 而i則變成101。
所以*p++還是100,和原來的*p一樣。而第二式的*p則變成++一個位址之後的200。
而遞增或遞減運算子放前面的話,則是先++或--再得其值。
所以*++p就是先++到了300,因此*++p=300,而下一式的*p也是300。
而++*p則是就目前的*p=300先++,此時是對值++,所以是301。 |