- 论坛徽章:
- 0
|
“勿在浮沙筑高台”
11 11
11 12
12 20
20 20
LZ的答案没有问题。
int x[] = {10, 20, 30};
int *px = x;
printf("%d,", ++*px);//++自右向左结合,先取到*px的值(x[0]),先自增1,这时候x[0]=11;
printf("%d\n", *px); // x[0]值11
px = x;
printf("%d,", (*px)++); // 由于有括号,先输出*px的值(x[0]=11),然后在自增1,x[0]=12;
printf("%d\n", *px); //x[0]=12
px = x;
printf("%d,", *px++); //虽然++优先级高于*,但后++遵循先用后加的原则,先输出*p的值x[0]
//12,然后执行px++,px指向数组的第二个元素x[1];
printf("%d\n", *px); //x[1]的值20
px = x; //指针又被指向x[0]了;
printf("%d,", *++px);//++px,px指向x[1]了,因此*++px的值x[1]=20;
printf("%d\n", *px); //px指向x[1]=20;
但是看看从一楼到现在的213楼的答案,觉得很是奇怪,如果大家不能很好的解析清楚,为什么不拿到机器上编下呢,而且还给出了各自的答案,并且现的很没有底气。
确实很简单的一个问题,折射出来的是我们的基础和对问题的态度。借侯san的那句“勿在浮沙筑高台”自勉。 |
|