課程
/后端開(kāi)發(fā)
/C
/C語(yǔ)言入門(mén)
a=100
printf(a++)不是該101嗎?
2019-07-12
源自:C語(yǔ)言入門(mén) 3-3
正在回答
a++和a--相當(dāng)于a=a+1和a=a-1;所以不同于倒數(shù)第二個(gè)a+1,他多了一個(gè)賦值操作,所以a的值保留下來(lái)了,但是單純的a+1只能在那一行輸出的時(shí)候+1,并不能保留這個(gè)值
感謝weixin_慕后端1512621的提問(wèn),讓我重新審視了自己上一個(gè)答案,發(fā)現(xiàn)第6、7條思路不夠嚴(yán)謹(jǐn),重新梳理了一下,作出修改如下:6.a+1=100+1=101(由運(yùn)算,得結(jié)果,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為100,由運(yùn)算100+1=101,而得出這個(gè)結(jié)果為101;
【注意】這里“為什么式"a+1"最后不取值?”
? ? ?? 我的猜想是這樣的,程序默認(rèn)"a++""a--""++a""--a""a"的運(yùn)算自成一格體系,相當(dāng)于一個(gè)主線(xiàn)任務(wù),在"a+1"這一步中,"a"取上一運(yùn)算值,此步驟的主線(xiàn)任務(wù)已經(jīng)完成,后面的"+1"相當(dāng)于支線(xiàn)任務(wù),支線(xiàn)任務(wù)雖然會(huì)被執(zhí)行,乃至得出結(jié)果,但其結(jié)果僅代表支線(xiàn)任務(wù)的完結(jié),并不會(huì)影響主線(xiàn)任務(wù),后面的主線(xiàn)任務(wù)仍然獨(dú)立運(yùn)行。(我是根據(jù)此步驟結(jié)尾處“//注意,這里并不改變a的值”這一提示推斷出來(lái)的)。
7.a=100(【注意】由上,因?yàn)楣?a+1""+1"部分相當(dāng)于“支線(xiàn)任務(wù)”,其結(jié)果101并不影響“主線(xiàn)任務(wù)”,所以這里取值應(yīng)該取"a+1"運(yùn)算中的“主線(xiàn)任務(wù)部分”,即取"a"的值,其結(jié)果為100。)
PS:我上一個(gè)回答,在運(yùn)算7.中說(shuō)跳過(guò)運(yùn)算6.取值,仔細(xì)想想不夠嚴(yán)謹(jǐn),應(yīng)該是運(yùn)算7.中"a"的值,取了運(yùn)算6."a+1"中的"a"值,即“主線(xiàn)部分”的運(yùn)算結(jié)果,這種思路“主線(xiàn)任務(wù)”仍然獨(dú)立且延續(xù)運(yùn)行,這樣才更符合程序運(yùn)行的思路才對(duì),畢竟程序不會(huì)像我們一樣鬧情緒,隨便的中斷、跳過(guò)某些步驟。我想這樣的邏輯才更加嚴(yán)謹(jǐn),歡迎大家共同探討,謝謝各位。? ? ?? 以上理論僅為個(gè)人推論,并不專(zhuān)業(yè),僅供大家參考,還請(qǐng)以專(zhuān)業(yè)人士說(shuō)明為上!
以下分析內(nèi)容為我個(gè)人的思考和推導(dǎo),并不專(zhuān)業(yè),僅供參考,如有錯(cuò)誤,還望不吝指教:
? ? ? ? 在該例子中a的數(shù)值是根據(jù)運(yùn)算不斷遞進(jìn)推演的,即上一運(yùn)算的結(jié)果為下一運(yùn)算a的數(shù)值。我個(gè)人的反思具體詳解如下所示:
a=100(目前“取值”為a=100)
"a++"="a+1"="100+1"=101(先取值,再運(yùn)算,這里的取值為上一個(gè)運(yùn)算結(jié)果,即100,再運(yùn)算100+1=101,運(yùn)算結(jié)果為101)
"++a"="a+1"="101+1"=102(先運(yùn)算,再取值,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為101;先運(yùn)算101+1=102,再取值為102)
"--a"="a-1"="102-1"=101(先運(yùn)算,再取值,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為102;先運(yùn)算102-1=101,再取值為101)
"a--"="a-1"="101-1"=100(先取值,再運(yùn)算,這里的取值為上一個(gè)運(yùn)算結(jié)果,即101,再運(yùn)算101-1=100,運(yùn)算結(jié)果為100)
a+1=100+1=101(由運(yùn)算,得結(jié)果,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為100,由運(yùn)算100+1=101,而得出這個(gè)結(jié)果為101;【注意】這里的運(yùn)算結(jié)果不影響下一運(yùn)算a的值,即不被后面運(yùn)算取值,如若后面運(yùn)算需要取值,則應(yīng)該跳過(guò)此條運(yùn)算,取值上一運(yùn)算最后的結(jié)果,即取值為100)
a=100(【注意】因?yàn)楣?a+1"最后不取值,所以這里取值需要跳過(guò)公式"a+1",從公式"a--"的運(yùn)算結(jié)果中取值,不需要任何運(yùn)算。)
? ? ?? 以上解釋是我個(gè)人自學(xué)反思的一些理解,如果答案對(duì)您有所幫助,希望您能點(diǎn)個(gè)贊,如果答案有錯(cuò)漏的地方,希望各位不嗇言辭,為我糾正錯(cuò)誤,共同進(jìn)步,謝謝各位。
weixin_慕后端1512621
leoliqian 回復(fù) weixin_慕后端1512621
這句話(huà)很很重要“它們經(jīng)常使用在循環(huán)中?!?img alt="" height="180" src="http://img1.sycdn.imooc.com//5492b925000133c704060208.jpg" width="351" />從上到下只有一個(gè)a,這個(gè)a是被循環(huán)用的。
解釋上面結(jié)果:a++=100(輸出值是100,其實(shí)已經(jīng)遞增1了);
下面++a=102(因?yàn)榍懊孢f增了1加上這次增的1所以就是102);下面的a就是以102為基礎(chǔ),以此類(lèi)推......
所以a++后,先輸出100后,a的值變?yōu)?01,++a后輸出102;如果102基礎(chǔ)上--a是輸出101,再進(jìn)行a--運(yùn)算輸出還是101,但a的值已經(jīng)變成了100。
a++是先執(zhí)行該條語(yǔ)句(輸出或是計(jì)算),然后再自減;++a則是相反,先自減,然后執(zhí)行語(yǔ)句;
a--和--a也一樣。
--a應(yīng)該是98 a--應(yīng)該是100
a++可以這么理解? a在前面他已經(jīng)取了值后面的+號(hào)對(duì)他沒(méi)有影響? ++a,+加號(hào)在前所以要+1+1+a =102
太陽(yáng)系新生 提問(wèn)者
weixin_慕前端6134695 回復(fù) 太陽(yáng)系新生 提問(wèn)者
南城夜雨 回復(fù) 太陽(yáng)系新生 提問(wèn)者
a++是先取值后運(yùn)算的 ?++a是先運(yùn)算后取值 ?也就是說(shuō)a是100是被 ?打印了一次 ?經(jīng)過(guò)兩次加一后才被 打印 所以就是加了2 ? 所以被打印成 ?102
舉報(bào)
C語(yǔ)言入門(mén)視頻教程,帶你進(jìn)入編程世界的必修課-C語(yǔ)言
1 回答--a中a的值是100還是102?
5 回答a = 100,為什么++a輸出是102
1 回答為什么++a是102,--a是101,若果++a是102,--a不應(yīng)該是98嗎
1 回答a=100,為什么a++輸出的還是100?
7 回答int a=100;為什么a++輸出還是100
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2019-07-27
a++和a--相當(dāng)于a=a+1和a=a-1;所以不同于倒數(shù)第二個(gè)a+1,他多了一個(gè)賦值操作,所以a的值保留下來(lái)了,但是單純的a+1只能在那一行輸出的時(shí)候+1,并不能保留這個(gè)值
2019-07-25
感謝weixin_慕后端1512621的提問(wèn),讓我重新審視了自己上一個(gè)答案,發(fā)現(xiàn)第6、7條思路不夠嚴(yán)謹(jǐn),重新梳理了一下,作出修改如下:
6.a+1=100+1=101(由運(yùn)算,得結(jié)果,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為100,由運(yùn)算100+1=101,而得出這個(gè)結(jié)果為101;
【注意】這里“為什么式"a+1"最后不取值?”
? ? ?? 我的猜想是這樣的,程序默認(rèn)"a++""a--""++a""--a""a"的運(yùn)算自成一格體系,相當(dāng)于一個(gè)主線(xiàn)任務(wù),在"a+1"這一步中,"a"取上一運(yùn)算值,此步驟的主線(xiàn)任務(wù)已經(jīng)完成,后面的"+1"相當(dāng)于支線(xiàn)任務(wù),支線(xiàn)任務(wù)雖然會(huì)被執(zhí)行,乃至得出結(jié)果,但其結(jié)果僅代表支線(xiàn)任務(wù)的完結(jié),并不會(huì)影響主線(xiàn)任務(wù),后面的主線(xiàn)任務(wù)仍然獨(dú)立運(yùn)行。(我是根據(jù)此步驟結(jié)尾處“//注意,這里并不改變a的值”這一提示推斷出來(lái)的)。
7.a=100(【注意】由上,因?yàn)楣?a+1""+1"部分相當(dāng)于“支線(xiàn)任務(wù)”,其結(jié)果101并不影響“主線(xiàn)任務(wù)”,所以這里取值應(yīng)該取"a+1"運(yùn)算中的“主線(xiàn)任務(wù)部分”,即取"a"的值,其結(jié)果為100。)
PS:我上一個(gè)回答,在運(yùn)算7.中說(shuō)跳過(guò)運(yùn)算6.取值,仔細(xì)想想不夠嚴(yán)謹(jǐn),應(yīng)該是運(yùn)算7.中"a"的值,取了運(yùn)算6."a+1"中的"a"值,即“主線(xiàn)部分”的運(yùn)算結(jié)果,這種思路“主線(xiàn)任務(wù)”仍然獨(dú)立且延續(xù)運(yùn)行,這樣才更符合程序運(yùn)行的思路才對(duì),畢竟程序不會(huì)像我們一樣鬧情緒,隨便的中斷、跳過(guò)某些步驟。我想這樣的邏輯才更加嚴(yán)謹(jǐn),歡迎大家共同探討,謝謝各位。
? ? ?? 以上理論僅為個(gè)人推論,并不專(zhuān)業(yè),僅供大家參考,還請(qǐng)以專(zhuān)業(yè)人士說(shuō)明為上!
2019-07-22
以下分析內(nèi)容為我個(gè)人的思考和推導(dǎo),并不專(zhuān)業(yè),僅供參考,如有錯(cuò)誤,還望不吝指教:
? ? ? ? 在該例子中a的數(shù)值是根據(jù)運(yùn)算不斷遞進(jìn)推演的,即上一運(yùn)算的結(jié)果為下一運(yùn)算a的數(shù)值。我個(gè)人的反思具體詳解如下所示:
a=100(目前“取值”為a=100)
"a++"="a+1"="100+1"=101(先取值,再運(yùn)算,這里的取值為上一個(gè)運(yùn)算結(jié)果,即100,再運(yùn)算100+1=101,運(yùn)算結(jié)果為101)
"++a"="a+1"="101+1"=102(先運(yùn)算,再取值,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為101;先運(yùn)算101+1=102,再取值為102)
"--a"="a-1"="102-1"=101(先運(yùn)算,再取值,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為102;先運(yùn)算102-1=101,再取值為101)
"a--"="a-1"="101-1"=100(先取值,再運(yùn)算,這里的取值為上一個(gè)運(yùn)算結(jié)果,即101,再運(yùn)算101-1=100,運(yùn)算結(jié)果為100)
a+1=100+1=101(由運(yùn)算,得結(jié)果,運(yùn)算前數(shù)值為上一公式的運(yùn)算結(jié)果,為100,由運(yùn)算100+1=101,而得出這個(gè)結(jié)果為101;【注意】這里的運(yùn)算結(jié)果不影響下一運(yùn)算a的值,即不被后面運(yùn)算取值,如若后面運(yùn)算需要取值,則應(yīng)該跳過(guò)此條運(yùn)算,取值上一運(yùn)算最后的結(jié)果,即取值為100)
a=100(【注意】因?yàn)楣?a+1"最后不取值,所以這里取值需要跳過(guò)公式"a+1",從公式"a--"的運(yùn)算結(jié)果中取值,不需要任何運(yùn)算。)
? ? ?? 以上解釋是我個(gè)人自學(xué)反思的一些理解,如果答案對(duì)您有所幫助,希望您能點(diǎn)個(gè)贊,如果答案有錯(cuò)漏的地方,希望各位不嗇言辭,為我糾正錯(cuò)誤,共同進(jìn)步,謝謝各位。
2019-07-21
這句話(huà)很很重要“它們經(jīng)常使用在循環(huán)中?!?img alt="" height="180" src="http://img1.sycdn.imooc.com//5492b925000133c704060208.jpg" width="351" />從上到下只有一個(gè)a,這個(gè)a是被循環(huán)用的。
解釋上面結(jié)果:a++=100(輸出值是100,其實(shí)已經(jīng)遞增1了);
下面++a=102(因?yàn)榍懊孢f增了1加上這次增的1所以就是102);下面的a就是以102為基礎(chǔ),以此類(lèi)推......
2019-07-14
所以a++后,先輸出100后,a的值變?yōu)?01,++a后輸出102;如果102基礎(chǔ)上--a是輸出101,再進(jìn)行a--運(yùn)算輸出還是101,但a的值已經(jīng)變成了100。
2019-07-14
a++是先執(zhí)行該條語(yǔ)句(輸出或是計(jì)算),然后再自減;++a則是相反,先自減,然后執(zhí)行語(yǔ)句;
a--和--a也一樣。
2019-07-13
--a應(yīng)該是98 a--應(yīng)該是100
2019-07-13
a++可以這么理解? a在前面他已經(jīng)取了值后面的+號(hào)對(duì)他沒(méi)有影響? ++a,+加號(hào)在前所以要+1+1+a =102
2019-07-12
a++是先取值后運(yùn)算的 ?++a是先運(yùn)算后取值 ?也就是說(shuō)a是100是被 ?打印了一次 ?經(jīng)過(guò)兩次加一后才被 打印 所以就是加了2 ? 所以被打印成 ?102