#include <stdio.h>
2 int main()
3 {
4 int c;
5 int a = 2,b = 1;
6 // c = ++(a+b);
7 /*
8 现象:左值无效
9 原因:常量和表达式不能作为左值。
10 a+b结果是3,为常量,不可进行自增自减预算,比如
11 i++翻译为i = i+1,所以,3++,就等效于 3 = 3++.
12 但是 4 = 5,这样的赋值运算是不允许的,所以,
13 常量不能进行自增自减运算
14 */
15 c = ++a;//a 是变量,可以进行自增运算
16 printf("c= %d\n",c);
17 int arr[10] = {1,2,3};
18 int *p = arr;
19 p++;
2 int main()
3 {
4 int c;
5 int a = 2,b = 1;
6 // c = ++(a+b);
7 /*
8 现象:左值无效
9 原因:常量和表达式不能作为左值。
10 a+b结果是3,为常量,不可进行自增自减预算,比如
11 i++翻译为i = i+1,所以,3++,就等效于 3 = 3++.
12 但是 4 = 5,这样的赋值运算是不允许的,所以,
13 常量不能进行自增自减运算
14 */
15 c = ++a;//a 是变量,可以进行自增运算
16 printf("c= %d\n",c);
17 int arr[10] = {1,2,3};
18 int *p = arr;
19 p++;
20 //arr++;
22 /* 结果:左值无效
23 原因:arr是数组的首地址,是一个确定的值,即是常量,
24 常量不能进行自增自减
所以,指向数组的指针可以进行自增自减运算,而数组名仅仅代表数组首地址,是常量,不可以自增减
记得: *(p+ i) 和*(a + i)内容一样,都是 a[ i ]中的内容
25 */
26 printf("p++ = %x\n",p);
27 printf("arr++ = %x\n",arr);
28 }