*p++和*++p的区别(转)

标签:
cp区别it |
分类: c |
-
#include
-
-
int
main( void) -
{
-
int a, b, i = 7; -
-
i++; //等价于i = i + 1; -
++i; //等价于i = i + 1; -
-
a = i++; //等价于a = i; i = i + 1; -
b = ++i; //等价于i = i + 1; b = i; -
-
printf("a = ,%d, b = %d\n" a, b); -
-
return 0; -
}
-
a
= 9, b = 11
-
#include
-
-
int
main( void) -
{
-
int a = 5; -
-
int *p = &a; -
-
int b //等价于b= (*p)++; = a++; 即b = a; a = a + 1; -
-
int c //等价于c= ++(*p); = ++a; 即a = a + 1; c = a; -
-
printf("b = ,%d, c = %d\n" b, c); -
-
printf("(*p)++ = ,%d, ++(*p) = %d\n" (*p)++, ++(*p)); -
-
return 0; -
}
-
b
= 5, c = 7 -
(*p)++
= 8, ++(*p) = 8
初等运算符 |
包括小括号 ()、中括号 [] 、成员访问运算符 . 和 -> 。 |
一元运算符 |
包括自增++和自减--、正负号+ 和-、间接运算*和取址运算& 、类型转换(type)、 sizeof 、逻辑反! 、位取反~等。 |
算术运算符 |
包括两级,先乘除(*、/、%)后加减(+、-)。 |
位移运算符 |
包括左移 << 和右移 >> 。 |
关系运算符 |
包括小于 < 、小于等于 <= 、大于 > 、大于等于 >= 。 |
判等运算符 |
包括相等 == 和不相等 != 。 |
位逻辑运算符 |
分三级,依次为位与 &、位异或 ^ 和位或 | 。 |
逻辑运算符 |
分两级,依次为逻辑与 && 和逻辑或 || 。 |
条件运算符 |
? : |
赋值运算符 |
包括= 、+= 、-=、 *=、 /=、 %= 、&= 、^=、 |= 、<<= 、>>= 。 |
逗号运算符 |
, |
-
#include
-
-
int
main( void) -
{
-
int arr[] = {1, 2, 3, 4}; -
int *p = arr; -
-
int a //等价于a= *p++; = *(p++); 即a = *p; p = p + 1; -
-
int b //等价于b= *++p; = *(++p); 即p = p + 1; b = *p; -
-
printf("a = ,%d, b = %d\n" a, b); -
-
return 0; -
}
-
a
= 1, b = 3