作业帮 > 综合 > 作业

C语言中++i代表自加1,为什么如下图程序中(++p)->a得5?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 08:28:59
C语言中++i代表自加1,为什么如下图程序中(++p)->a得5?

然后我把(++p)->a中删掉一个+,变成了(+p)->a,结果就是3了(如下图).但是+不是双目运算符么?

真正的原因是:
printf这个函数的执行顺序是从右往左的
也就是说先输出(p++)->s此时p加了一次1
在输出(++p)->s此时又加了一次1

我是自己试出来的,实验程序如下:



至于我后来说的(+p)->a这个,(+p)中的+根本就没参加运算.
指针加减是对指针所指的大小而言的,这里指针加一实际上是对这个结构体的长度加一.那么就移动了两个int长度,指向了s(2)
再问: 我起初也是这么想的,但是真正的原因是:printf这个函数的执行顺序是从右往左的也就是说先输出(p++)->s此时p加了一次1在输出(++p)->s此时又加了一次1
我是自己试出来的

再答: 支持,我答完就知道错了。的确是你说的,刚准备上来完善