免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3054 | 回复: 5
打印 上一主题 下一主题

[数值计算] awk中a++与++a的区别 [复制链接]

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2016-02-15 06:20:002016猴年福章徽章
日期:2016-02-18 15:30:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-24 14:38 |只看该作者 |倒序浏览
  1. awk 'BEGIN {print a++,++a }'
  2. 0 2
复制代码
怎么也想不明白a++怎么会是0呢?在论坛里也看到相应的解释,比如说“后加”是先读取变量的值再加1,a的初始值是0,先读取0然后再加1,那a++不应该是1吗?还请大神指点,多谢!

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
2 [报告]
发表于 2016-01-24 17:50 |只看该作者
本帖最后由 baby_神 于 2016-01-24 17:52 编辑

a++是先打印a的值然后再加一,
++a是先加一然后再打印a的值。
  1. [root@centos ~]# awk 'BEGIN{print a++,a,++a}'
  2. 0 1 2
复制代码
a++,++a,刚开始a的值是0,就打印0,再加一,所以打印出来的a++就是0;然后开始++a,此时a的值为1,++a先加一再打印,即a的值为2.

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2016-01-25 08:49 |只看该作者
跟其它语言(比如C语言)里面的用法一样,没有什么特别的。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
4 [报告]
发表于 2016-01-25 09:48 |只看该作者
a++ 与 ++a , 根据上下文,  都是自增1

不同的是, a++返回的是a自增前的值, ++a 返回的是a自增后的值

论坛徽章:
2
15-16赛季CBA联赛之北控
日期:2016-01-19 15:19:55程序设计版块每日发帖之星
日期:2016-01-25 06:20:00
5 [报告]
发表于 2016-01-25 10:35 |只看该作者
注意开始变量a的值为0  a++返回的是a自增前的值, ++a 返回的是a自增后的值

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
6 [报告]
发表于 2016-01-26 14:31 |只看该作者
a++是先返回a的值再自增,++a是先自增再返回值.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP