課程
/后端開發
/C
/C語言入門
a=100
printf(a++)不是該101嗎?
2019-07-12
源自:C語言入門 3-3
正在回答
a++和a--相當于a=a+1和a=a-1;所以不同于倒數第二個a+1,他多了一個賦值操作,所以a的值保留下來了,但是單純的a+1只能在那一行輸出的時候+1,并不能保留這個值
感謝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"值,即“主線部分”的運算結果,這種思路“主線任務”仍然獨立且延續運行,這樣才更符合程序運行的思路才對,畢竟程序不會像我們一樣鬧情緒,隨便的中斷、跳過某些步驟。我想這樣的邏輯才更加嚴謹,歡迎大家共同探討,謝謝各位。? ? ?? 以上理論僅為個人推論,并不專業,僅供大家參考,還請以專業人士說明為上!
以下分析內容為我個人的思考和推導,并不專業,僅供參考,如有錯誤,還望不吝指教:
? ? ? ? 在該例子中a的數值是根據運算不斷遞進推演的,即上一運算的結果為下一運算a的數值。我個人的反思具體詳解如下所示:
a=100(目前“取值”為a=100)
"a++"="a+1"="100+1"=101(先取值,再運算,這里的取值為上一個運算結果,即100,再運算100+1=101,運算結果為101)
"++a"="a+1"="101+1"=102(先運算,再取值,運算前數值為上一公式的運算結果,為101;先運算101+1=102,再取值為102)
"--a"="a-1"="102-1"=101(先運算,再取值,運算前數值為上一公式的運算結果,為102;先運算102-1=101,再取值為101)
"a--"="a-1"="101-1"=100(先取值,再運算,這里的取值為上一個運算結果,即101,再運算101-1=100,運算結果為100)
a+1=100+1=101(由運算,得結果,運算前數值為上一公式的運算結果,為100,由運算100+1=101,而得出這個結果為101;【注意】這里的運算結果不影響下一運算a的值,即不被后面運算取值,如若后面運算需要取值,則應該跳過此條運算,取值上一運算最后的結果,即取值為100)
a=100(【注意】因為公式"a+1"最后不取值,所以這里取值需要跳過公式"a+1",從公式"a--"的運算結果中取值,不需要任何運算。)
? ? ?? 以上解釋是我個人自學反思的一些理解,如果答案對您有所幫助,希望您能點個贊,如果答案有錯漏的地方,希望各位不嗇言辭,為我糾正錯誤,共同進步,謝謝各位。
weixin_慕后端1512621
leoliqian 回復 weixin_慕后端1512621
這句話很很重要“它們經常使用在循環中?!?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為基礎,以此類推......
所以a++后,先輸出100后,a的值變為101,++a后輸出102;如果102基礎上--a是輸出101,再進行a--運算輸出還是101,但a的值已經變成了100。
a++是先執行該條語句(輸出或是計算),然后再自減;++a則是相反,先自減,然后執行語句;
a--和--a也一樣。
--a應該是98 a--應該是100
a++可以這么理解? a在前面他已經取了值后面的+號對他沒有影響? ++a,+加號在前所以要+1+1+a =102
太陽系新生 提問者
weixin_慕前端6134695 回復 太陽系新生 提問者
南城夜雨 回復 太陽系新生 提問者
a++是先取值后運算的 ?++a是先運算后取值 ?也就是說a是100是被 ?打印了一次 ?經過兩次加一后才被 打印 所以就是加了2 ? 所以被打印成 ?102
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
1 回答--a中a的值是100還是102?
5 回答a = 100,為什么++a輸出是102
1 回答為什么++a是102,--a是101,若果++a是102,--a不應該是98嗎
7 回答int a=100;為什么a++輸出還是100
1 回答a=100,為什么a++輸出的還是100?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-07-27
a++和a--相當于a=a+1和a=a-1;所以不同于倒數第二個a+1,他多了一個賦值操作,所以a的值保留下來了,但是單純的a+1只能在那一行輸出的時候+1,并不能保留這個值
2019-07-25
感謝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"值,即“主線部分”的運算結果,這種思路“主線任務”仍然獨立且延續運行,這樣才更符合程序運行的思路才對,畢竟程序不會像我們一樣鬧情緒,隨便的中斷、跳過某些步驟。我想這樣的邏輯才更加嚴謹,歡迎大家共同探討,謝謝各位。
? ? ?? 以上理論僅為個人推論,并不專業,僅供大家參考,還請以專業人士說明為上!
2019-07-22
以下分析內容為我個人的思考和推導,并不專業,僅供參考,如有錯誤,還望不吝指教:
? ? ? ? 在該例子中a的數值是根據運算不斷遞進推演的,即上一運算的結果為下一運算a的數值。我個人的反思具體詳解如下所示:
a=100(目前“取值”為a=100)
"a++"="a+1"="100+1"=101(先取值,再運算,這里的取值為上一個運算結果,即100,再運算100+1=101,運算結果為101)
"++a"="a+1"="101+1"=102(先運算,再取值,運算前數值為上一公式的運算結果,為101;先運算101+1=102,再取值為102)
"--a"="a-1"="102-1"=101(先運算,再取值,運算前數值為上一公式的運算結果,為102;先運算102-1=101,再取值為101)
"a--"="a-1"="101-1"=100(先取值,再運算,這里的取值為上一個運算結果,即101,再運算101-1=100,運算結果為100)
a+1=100+1=101(由運算,得結果,運算前數值為上一公式的運算結果,為100,由運算100+1=101,而得出這個結果為101;【注意】這里的運算結果不影響下一運算a的值,即不被后面運算取值,如若后面運算需要取值,則應該跳過此條運算,取值上一運算最后的結果,即取值為100)
a=100(【注意】因為公式"a+1"最后不取值,所以這里取值需要跳過公式"a+1",從公式"a--"的運算結果中取值,不需要任何運算。)
? ? ?? 以上解釋是我個人自學反思的一些理解,如果答案對您有所幫助,希望您能點個贊,如果答案有錯漏的地方,希望各位不嗇言辭,為我糾正錯誤,共同進步,謝謝各位。
2019-07-21
這句話很很重要“它們經常使用在循環中?!?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為基礎,以此類推......
2019-07-14
所以a++后,先輸出100后,a的值變為101,++a后輸出102;如果102基礎上--a是輸出101,再進行a--運算輸出還是101,但a的值已經變成了100。
2019-07-14
a++是先執行該條語句(輸出或是計算),然后再自減;++a則是相反,先自減,然后執行語句;
a--和--a也一樣。
2019-07-13
--a應該是98 a--應該是100
2019-07-13
a++可以這么理解? a在前面他已經取了值后面的+號對他沒有影響? ++a,+加號在前所以要+1+1+a =102
2019-07-12
a++是先取值后運算的 ?++a是先運算后取值 ?也就是說a是100是被 ?打印了一次 ?經過兩次加一后才被 打印 所以就是加了2 ? 所以被打印成 ?102