我对这两个 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
在增量之前的值。优先级不会改变这一点——无论表达式中其他运算符的优先级高多少或低多少,它产生的值将始终是增量之前的值,增量将在之后的某个时间完成。
关于c - C中的后增量和前增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10764180/