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的地址中取值
至此,解答完畢。