關於C語言中i++和++i的區別以及printf輸出的一些問題。


a_pos = a++; //后綴,使用a的值之后,遞增a

b_pre = ++b; //前綴,使用b的值之前,遞增b

a--和--b同理,不必贅述。這是幾乎每個學習過C語言的同學都會知道的,而我在幫助一位“偷懶”的同學解答時,遇到了如下問題。

這位同學將書上本該分開寫的printf語句連在了一起寫,出現了這樣的問題,讓我一時難以解答。

直覺告訴我有可能是printf語句的問題,於是我在網上搜了printf語句的詳解https://www.cnblogs.com/Ahair/p/5017050.html

身為菜雞的我看完以后並沒有解答我心中的疑惑,於是繼續百度,終於讓我在百度百科里找到了這句話讓我有些明白了。

身為菜雞的我本着打破沙鍋問到底的精神更深入的去搜索,得到了這篇博客對於printf為何是從右到左壓棧的解答:https://blog.csdn.net/jiange_zh/article/details/47381597

這樣一來i++的輸出結果反過來的問題似乎得到了解答,可是為啥++i的結果是一排12又讓人陷入了困惑。

身為懶癌的我放棄了掙扎,詢問了蟲子師傅和黃兄,得到了如下解答,深感大佬的牛逼。

C語言在處理前置和后置時的方式不同:

    在處理后置時:是將值放入臨時量中,在輸出時直接從臨時量中取值

    在處理前置時:是等運算完成后,直接從I的地址中取值

       

 

至此,解答完畢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM