寫出下面三個程序的結果:
#include <stdio.h>
int main(void)
{
\tint arr[] = {10, 20};
\tint *p = arr;
\t++*p;
\tprintf("arr[0] = %d, arr[1] = %d, *p = %d",
\t\t\t\t\t\tarr[0], arr[1], *p);
\treturn 0;
}
/<stdio.h>
結果:
#include <stdio.h>
int main(void)
{
\tint arr[] = {10, 20};
\tint *p = arr;
\t*p++;
\tprintf("arr[0] = %d, arr[1] = %d, *p = %d",
\t\t\t\t\t\tarr[0], arr[1], *p);
\treturn 0;
}
/<stdio.h>
結果:?
#include <stdio.h>
int main(void)
{
\tint arr[] = {10, 20};
\tint *p = arr;
\t*++p;
\tprintf("arr[0] = %d, arr[1] = %d, *p = %d",
\t\t\t\t\t\tarr[0], arr[1], *p);
\treturn 0;
}
/<stdio.h>
結果: ?
規則:
(一) 前置 ++ 和 * 的優先級一樣,所以採用從右往左的方式進行計算;
(二)後置 ++ 的優先級高於 * 和前置 ++ 使用從左往右的計算方式進行計算;
++*p 的意思就是 ++(*p)
*p++ 的意思就是 *(p++)
*++p 的意思就是 *(++p)
所以第一個程序的輸出為:
arr[0] = 11, arr[1] = 20, *p = 11
第二個程序輸出的結果為:
arr[0] = 10, arr[1] = 20, *p = 20
第三個程序的輸出結果為:
arr[0] = 10, arr[1] = 20, *p = 20
閱讀更多 天天優選視頻 的文章