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