1、
struct num
{int a,b;}s[]={{1,6},{2,3}},*p=s;
printf("%d",p->b/s[1].a*++p->a);
为什么输出6?先算p->b再算s[1].a,之后是++p->a,最后算乘除对吗。
++p->a为什么是2?->的优先级不是比++高么,为什么不是先取值再++
2、
static int a[10]={1,3,5,7,9};
int *p=a;
printf("%d",*p++**++p);
为什么结果是9.运算顺序是什么。
先 -> ,再 ++,然后 / 和 * 按顺序运行,结果确实是 6。
关键是 ++p->a 的顺序,结果是:2,最后 6 / 2 * 2,所以结果是 6。
第二个的运行结果与下面的代码相同:
还是先计算了 (*++p)。
static int a[10]={1,3,5,7,9};
int *p=a;
int i2 = (*++p);
int i1 = (*p++);
int iRe = i1 * i2;
printf("%d",iRe);