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

来源:学生作业帮助网 编辑:作业帮 时间:2024/10/03 03:40:44
问一道程序题 ,int a[ ]={1,2,3,4,5,6},*p=a;表达式( * ++p)++的值是,为什么是2?过程是什么〉
xœN"A_t2a݋b< ͘FV_4 3Vw!kojRN&DǍv&^|Vc2Bz%->*O8i{6:mFOOX3m^ܞ"hP@(~R-K懎lM'~F%dS SLOF<BPuF,OCF #*\Q4VCGtw ^-.xPږw*uIQRpo 4ǣɖ<2 7U1OH4e0c4UZ?hx- =*זnnk\ ѹRAx-J4V\ѭc]pְسt%F{7BMkK8&P 7%h[VqaT2]Hd̤?Q? 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;表达式( * ++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