#include<stdio.h>
void main()
{
int a[4]={8,61,32,53},*p;
p=&a[2];
printf("%d,%d\n",*--p,*p--);
}
不同编译器,好像结果不一样?
从右向左执行
先得到32 后置--变61
前置--得8
尽量不要一行写多个自增自减运算符,容易出问题,就比如你这种,真要解释话,我认为不同编译器也不同,依据答案解释的话,就是p先减了两次,并不是按顺序
正常逗号表达式从左往右执行
但是这不是逗号表达式,是print函数的多个参数,多个参数从最右边的开始执行
类似这种题不用太较真,1000分里遇不到1分
#include<stdio.h>
void main()
{
int a[4]={8,61,32,53},*p;
p=&a[2];
int i = 2;
printf("%d,%d,%d,%d\n",--i,i--,a[--i],a[i--]);
printf("%d,%d\n",*--p,*p--);
}