欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于C语言中i++和++i的区别以及printf输出的一些问题。

程序员文章站 2022-11-07 20:35:14
a_pos = a++; //后缀,使用a的值之后,递增a b_pre = ++b; //前缀,使用b的值之前,递增b a--和--b同理,不必赘述。这是几乎每个学习过C语言的同学都会知道的,而我在帮助一位“偷懒”的同学解答时,遇到了如下问题。 这位同学将书上本该分开写的printf语句连在了一起写 ......

a_pos = a++; //后缀,使用a的值之后,递增a

b_pre = ++b; //前缀,使用b的值之前,递增b

a--和--b同理,不必赘述。这是几乎每个学习过c语言的同学都会知道的,而我在帮助一位“偷懒”的同学解答时,遇到了如下问题。

关于C语言中i++和++i的区别以及printf输出的一些问题。

这位同学将书上本该分开写的printf语句连在了一起写,出现了这样的问题,让我一时难以解答。

直觉告诉我有可能是printf语句的问题,于是我在网上搜了printf语句的详解https://www.cnblogs.com/ahair/p/5017050.html

身为菜鸡的我看完以后并没有解答我心中的疑惑,于是继续百度,终于让我在百度百科里找到了这句话让我有些明白了。

关于C语言中i++和++i的区别以及printf输出的一些问题。

身为菜鸡的我本着打破沙锅问到底的精神更深入的去搜索,得到了这篇博客对于printf为何是从右到左压栈的解答:

这样一来i++的输出结果反过来的问题似乎得到了解答,可是为啥++i的结果是一排12又让人陷入了困惑。

身为懒癌的我放弃了挣扎,询问了虫子师傅和黄兄,得到了如下解答,深感大佬的牛逼。

c语言在处理前置和后置时的方式不同:

    在处理后置时:是将值放入临时量中,在输出时直接从临时量中取值

    在处理前置时:是等运算完成后,直接从i的地址中取值

关于C语言中i++和++i的区别以及printf输出的一些问题。       

 关于C语言中i++和++i的区别以及printf输出的一些问题。

至此,解答完毕。