實施例代碼* BUF ++ = *的buf + 10 - 最後一個表達式的解釋
int arr[3] = { 0, 1 };
int* buf = arr;
*buf++ = *buf + 10;
結果是buf[0] == 10
。我教過它會是buf[0] == 11
。
我的一所大學寫了類似於示例代碼的東西,我教它的工作方式與它的不同。我想知道它爲什麼如此運作。
我開始研究它的方法是查看運算符優先級表。它表示後綴++優先於解引用。因此,我教導operator=
buf
左側會指向第一個元素,但在operator=
的右側,它已經增加並指向第二個元素。但事實並非如此。
我的問題是,這是爲什麼?最好是標準報價:)但是歡迎任何解釋!
這裏有一個標準的報價:***未定義的行爲*** * - 這個國際標準沒有要求的行爲* – chris
我不明白爲什麼人們低估這些dups,我不清楚它是這樣輕鬆搜索這類問題。只需投票結束。 –
@ ShafikYaghmour:同意。如果你不知道爲什麼這個行爲是未定義的,你怎麼可能知道在搜索中包含「序列點」這個詞? –