栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】探究a++与++a的区别

C/C++/C# 更新时间:发布时间: 百科书网 趣学号

使用软件:vs2019(其他编译器可能有所不同)

前言:众所周知,a++为先取值再自增,++a为先自增再取值,但仅通过两句话并不好理解其在编译器中的实际运行逻辑,笔者因此进行实验得出了其背后运行逻辑,若有错误/遗漏欢迎指出/补充

先放结论:

a++:先取a初始值为值参与本行的运算,本行结束后,a进行自增

++a:先执行本行所有自增操作(无论前后缀),再取自增结果为值参与本行运算

节省时间版:

详细解说版: 第一步:验证i++均取 i 初始值参与运算

解析:a = 10+10+10+10,输出40,在该语句中,i++取初始值10为值参与运算。i 经过4次自增最后输出14。

 第二步:将两个i++改为++i,验证++i的执行方式为先自增(整行)后取值

解析:a = 14+14+10+10,输出48,在该语句中,共有4个自增运算符,++i 先在初始值10的基础上进行4次自增得到结果14,并以此结果参与运算,而 i++ 取i的初始值10为值参与运算。

第三步:将赋值对象由a改为i,验证i++是在语句结束后执行

 解析:i = 14+14+10+10,输出50(而不是48),在该语句中,共有4个自增运算符,++i 先进行4次自增得到结果14,并以此结果参与运算,而 i++ 取i的初始值10为值参与运算,此时 i 值为48 ;因为语句中存在2个i++,语句结束后 i 执行2次自增,最终输出结果为48+2=50。

第四步:将1个++i替换为i++,验证上述理论是否正确

 解析:i = 14+10+10+10,在该语句中,输出47(而不是44),共有4个自增运算符,++i 先进行4次自增得到结果14,并以此结果参与运算,而 i++ 取i的初始值10为值参与运算,此时 i 值为44;因为语句中存在3个i++,语句结束后 i 执行3次自增,最终输出结果为44+3=47。

综上所述

在vs2019中

a++:先取a为值参与本行的运算,本行结束后,a进行自增

++a:先执行本行所有自增操作(无论前后缀),再取自增结果为值参与本行运算

 

 

 

 

 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1033872.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号