问一道程序题 ,int a[ ]={1,2,3,4,5,6},*p=a;表达式( * ++p)++的值是,为什么是2?过程是什么〉

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 05:07:53

问一道程序题 ,int a[ ]={1,2,3,4,5,6},*p=a;表达式( * ++p)++的值是,为什么是2?过程是什么〉
问一道程序题 ,
int a[ ]={1,2,3,4,5,6},*p=a;表达式( * ++p)++的值是,为什么是2?过程是什么〉

问一道程序题 ,int a[ ]={1,2,3,4,5,6},*p=a;表达式( * ++p)++的值是,为什么是2?过程是什么〉
int a[ ]={1,2,3,4,5,6},*p=a;
int b=(*++p)++;
你的意思应该是说b的值为什么是2对吧
先说++自增运算,当他在变量前时,就先让变量自增,再使用变量自增后的值
当他在变量后,那就先使用变量的原值,再让变量自增1
好了,
(*++p)++;
相当于
p++; //先自增
(*p)++; //再使用自增后的值
由于最开始p指向a数组的第一个值,自增后就应该指向第二个值2
所以 此时 *p=2;
然后
b=(*p)++;
由于 ++在后,所以先使用原值
b=*p;
然后
(*p)++;
相当于
a[1]++;
所以
b的值为2
但是a[1]的值变成了3