问一道C语言的问题

问一道C语言的问题如图,这是一个while循环指令。答案中第二行指令,为什么要将t1与s6中save的基址相加?

第1个回答  2019-02-16
其实i++是引用原值后自增1;而++i是先自增1在引用。这个是在表达式中,而单独个一个语句i++和++i其实都是一样的。
比如说
int
i=1;printf("%d\n",i+++1);(结果2)

int
i=1;printf("%d\n",++i+1);(结果3)就有区别。
而int
i=1;
i++;
printf("%d\n",i);和
int
i=1;
++i;
printf("%d\n",i);就没区别,结果都是2。
第2个回答  2019-04-15
i++ 执行的时候是 先执行i的原值 然后将i自加 例如:i=0;i++;printf("%d",i); 输出0 但此时的i已经变成了1 如果在第一个printf后再加一条语句printf("%d",i); 会输出1
而++i 执行的时候是 先将i自加 然后用自加后的i值运算 例如:i=0;++i;printf("%d",i); 直接输出1  
第3个回答  2018-07-28
s6保存的是数组save的基址,t1保存的是下标为i的元素(save[i])的偏移地址(相对于save的基址的偏移量),等于:i×4。只有将s6加到t1后,t1的值才是save[i]的地址(物理地址)。例如,假设save的基址是2000,则save[0]的地址是2000+0×4,save[1]的地址是2000+1×4,save[i]的地址是2000+i×4。追问

讲的很详细,明白了,谢谢

追答

不用谢!

本回答被提问者采纳
第4个回答  2018-07-28
这叫汇编语言追问

我知道啊,例题答案是汇编语言,例题是c语言

第5个回答  2018-07-28
看不懂
相似回答