亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么a原值是100,a++還是100,++a就成了102了,--a和a--都是101,到底是為啥

a=100

printf(a++)不是該101嗎?

正在回答

9 回答

a++和a--相當于a=a+1和a=a-1;所以不同于倒數第二個a+1,他多了一個賦值操作,所以a的值保留下來了,但是單純的a+1只能在那一行輸出的時候+1,并不能保留這個值

0 回復 有任何疑惑可以回復我~

感謝weixin_慕后端1512621的提問,讓我重新審視了自己上一個答案,發現第6、7條思路不夠嚴謹,重新梳理了一下,作出修改如下:
6.a+1=100+1=101(運算,得結果,運算前數值為上一公式的運算結果,為100,運算100+1=101,而得出這個結果為101;

【注意】這里“為什么式"a+1"最后不取值?”

? ? ?? 我的猜想是這樣的,程序默認"a++""a--""++a""--a""a"的運算自成一格體系,相當于一個主線任務,在"a+1"這一步中,"a"取上一運算值,此步驟的主線任務已經完成,后面的"+1"相當于支線任務,支線任務雖然會被執行,乃至得出結果,但其結果僅代表支線任務的完結,并不會影響主線任務,后面的主線任務仍然獨立運行。(我是根據此步驟結尾處“//注意,這里并不改變a的值”這一提示推斷出來的)。

7.a=100(【注意】由上,因為公式"a+1""+1"部分相當于“支線任務”,其結果101并不影響“主線任務”,所以這里取值應該取"a+1"運算中的“主線任務部分”,即取"a"的值,其結果為100。)

PS:我上一個回答,在運算7.中說跳過運算6.取值,仔細想想不夠嚴謹,應該是運算7.中"a"的值,取了運算6."a+1"中的"a"值,即“主線部分”的運算結果,這種思路“主線任務”仍然獨立且延續運行,這樣才更符合程序運行的思路才對,畢竟程序不會像我們一樣鬧情緒,隨便的中斷、跳過某些步驟。我想這樣的邏輯才更加嚴謹,歡迎大家共同探討,謝謝各位。
? ? ?? 以上理論僅為個人推論,并不專業,僅供大家參考,還請以專業人士說明為上

0 回復 有任何疑惑可以回復我~

https://img1.sycdn.imooc.com//5d35638e000133c704060208.jpg

以下分析內容為我個人的思考和推導,并不專業,僅供參考,如有錯誤,還望不吝指教:

? ? ? ? 在該例子中a的數值是根據運算不斷遞進推演,即上一運算的結果為下一運算a的數值。我個人的反思具體詳解如下所示:

  1. a=100(目前“取值”為a=100)

  2. "a++"="a+1"="100+1"=101(先取值,再運算,這里的取值為上一個運算結果,即100,再運算100+1=101,運算結果為101)

  3. "++a"="a+1"="101+1"=102(先運算,再取值,運算前數值為上一公式的運算結果,為101;先運算101+1=102,再取值為102

  4. "--a"="a-1"="102-1"=101(先運算,再取值,運算前數值為上一公式的運算結果,為102;先運算102-1=101,再取值為101

  5. "a--"="a-1"="101-1"=100(先取值,再運算,這里的取值為上一個運算結果,即101,再運算101-1=100,運算結果為100)

  6. a+1=100+1=101(運算,得結果,運算前數值為上一公式的運算結果,為100,運算100+1=101,而得出這個結果為101;【注意】這里的運算結果不影響下一運算a的值,即不被后面運算取值,如若后面運算需要取值,則應該跳過此條運算,取值上一運算最后的結果,即取值為100)

  7. a=100(【注意】因為公式"a+1"最后不取值,所以這里取值需要跳過公式"a+1",從公式"a--"的運算結果中取值,不需要任何運算。)

? ? ?? 以上解釋是我個人自學反思的一些理解,如果答案對您有所幫助,希望您能點個贊,如果答案有錯漏的地方,希望各位不嗇言辭,為我糾正錯誤,共同進步,謝謝各位。

11 回復 有任何疑惑可以回復我~
#1

weixin_慕后端1512621

為什么式"a+1"最后不取值呢
2019-07-24 回復 有任何疑惑可以回復我~
#2

leoliqian 回復 weixin_慕后端1512621

這里并不改變a的值”推斷得出此結果)。
2019-07-24 回復 有任何疑惑可以回復我~
#3

leoliqian 回復 weixin_慕后端1512621

我的理解是這樣的,程序默認"a++""a--""++a""--a""a"的運算自成一格體系,相當于一個主線任務,在"a+1"這一步中,"a"取上一運算值,此步驟的主線任務已經完成,后面的"+1"相當于支線任務,支線任務雖然會被執行,乃至得出結果,但其結果僅代表支線任務的完結,并不會影響主線任務,后面的主線任務仍然獨立運行。(我是根據此步驟結尾處“//注意,這里并不改變a的值”這一提示推斷出來的) 這些說法都是我自己的推想,并不專業,僅供大家參考,以專業人士解答為主,不嚴謹甚至錯誤的地方,希望各位為我糾正,共同進步,謝謝各位!
2019-07-24 回復 有任何疑惑可以回復我~

這句話很很重要“它們經常使用在循環中?!?img alt="" height="180" src="http://img1.sycdn.imooc.com//5492b925000133c704060208.jpg" width="351" />從上到下只有一個a,這個a是被循環用的。

解釋上面結果:a++=100(輸出值是100,其實已經遞增1了);

下面++a=102(因為前面遞增了1加上這次增的1所以就是102);下面的a就是以102為基礎,以此類推......

0 回復 有任何疑惑可以回復我~

所以a++后,先輸出100后,a的值變為101,++a后輸出102;如果102基礎上--a是輸出101,再進行a--運算輸出還是101,但a的值已經變成了100。

4 回復 有任何疑惑可以回復我~

a++是先執行該條語句(輸出或是計算),然后再自減;++a則是相反,先自減,然后執行語句;

a--和--a也一樣。

0 回復 有任何疑惑可以回復我~

--a應該是98 a--應該是100


0 回復 有任何疑惑可以回復我~

a++可以這么理解? a在前面他已經取了值后面的+號對他沒有影響? ++a,+加號在前所以要+1+1+a =102

0 回復 有任何疑惑可以回復我~
#1

太陽系新生 提問者

這么說的話,--a不是該等于98嗎 a--就是100啊 為什么 a--和--a都是101
2019-07-13 回復 有任何疑惑可以回復我~
#2

weixin_慕前端6134695 回復 太陽系新生 提問者

--a只減去一個值并且前面的a的值已經被改變了
2019-07-14 回復 有任何疑惑可以回復我~
#3

南城夜雨 回復 太陽系新生 提問者

那是負號不是減號相當于負一 我是這么理解的
2019-07-19 回復 有任何疑惑可以回復我~

a++是先取值后運算的 ?++a是先運算后取值 ?也就是說a是100是被 ?打印了一次 ?經過兩次加一后才被 打印 所以就是加了2 ? 所以被打印成 ?102


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么a原值是100,a++還是100,++a就成了102了,--a和a--都是101,到底是為啥

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號