int main(void)
{
int n1 = 2, n2 = 5;
int *p = &n1, *q = &n2;
*p = *(q++);
printf("%d,%d", *p, *q);
return 0;
}
输出= 5,5指针递增是如何工作的
为什么的*q
值是5,应该有一些垃圾的价值?
INT主要(无效)
{
int n1 = 2, n2 = 5;
int *p = &n1, *q = &n2;
*p = *(++q);
printf("%d,%d", *p, *q);
return 0;
}
输出= 2,2
怎么会这样呢? 任何人都可以解释优先级规则如何在指针中工作吗?
是什么让你觉得5不是'一些垃圾价值'? – ach
因为这个巧合可能会发生1或2次,但不是每次我运行程序时........ –
没有理由说明程序在每次运行时都不应该产生一致的结果。 '垃圾值'并不意味着有一个随机数生成器来生成它。它意味着程序在堆栈上执行的其他活动中剩下的某种东西。在每次运行都执行相同活动的程序中,该剩余物可能也是一样的。 – ach