++ 運算符的位置,在後面是先取值,再加一。所以這行代碼相當於:

d += p;
P += 1;

+= 運算符,相當於加法和賦值放一起簡寫了。它與以下代碼是一模一樣的:

d = d + p;
p = p + 1;

現代編譯器,編譯優化都是做得非常好的。所以過去有說法,說上面 += 比展開的寫法要快,++ 比 += 1 還要快,個人認為現在已經意義不大了,不必摳這個。

有人說把手裡的垃圾書扔掉,我同意。看就看好書,不要在 ++ 這種問題上糾結。比如什麼 i+++++j 這種代碼,你除了在這本垃圾書上,一輩子也不會寫出這樣的代碼,如果你寫了,你會被同事打死的。至於現在,你是在大學裡要參加考試,那隻能就題論題。你只需要知道,++在前面和在後面,是有區別的就行了,簡單的代碼,比如你問的這個,能看懂,就行了。實在不行,考試時,這分不要了,不就是一道題嘛,你考過也不差這一道題。實際寫代碼時,可讀性,或者叫易讀性,可維護性,是最重要的,沒有之一。寫這樣的代碼,只是少了一行而已,但是可讀性會變得非常差,這是得不嘗失的。我們的內存、磁碟,不在乎你多寫這麼幾行代碼,但是我們自己、我們的同事,非常在乎代碼的可讀性。這種哲學,與70年代時那種追求極簡、追求能少寫一個字母絕不多寫一個字母的哲學,是完全不一樣的。


趕緊把你現在手裡的那本垃圾書丟掉

這樣寫沒有任何意義

---------------------------以上為情緒化回答-------------------------

d +=p++

其實就是難懂版的

d += p;
p++;

它可以在考試中考察優先順序

也可以在類似百行貪喫蛇這種以追求代碼行數少為目的的情況下省一行代碼

但是在實際的開發中,請不要這樣寫

哪怕在語法上並沒有什麼錯誤


不建議你搞懂,沒有任何意義,c語言強大的表達力不是這麼用的


作為一名oier,我想說

這樣的代碼就不應該存在!


推薦閱讀:
相關文章