关于这两个C语句,我有一个问题:
x = y++;
t = *ptr++;
在语句1中,y的初始值复制到x中,然后y递增。
对于语句2,我们研究*ptr所指的值,将其放入变量t中,然后稍后递增ptr。
对于语句1,后缀增量运算符的优先级高于赋值运算符。所以y不应该先递增,然后x被赋给y的递增值吗?
我不明白在这种情况下运算符的优先级。

最佳答案

你误解了你的2]的意思。后增量总是在增量之前产生值,然后在增量之后的某个时间产生值。
因此,t = *ptr++本质上等同于:

t = *ptr;
ptr = ptr + 1;

这同样适用于您的1]——从y++得到的值是增量前的y值。优先级不会改变这一点——不管表达式中其他运算符的优先级有多高或多低,它产生的值始终是增量之前的值,增量将在之后的某个时间完成。

09-26 11:50
查看更多