Chinaunix

标题: awk中a++与++a的区别 [打印本页]

作者: jakyandy    时间: 2016-01-24 14:38
标题: awk中a++与++a的区别
  1. awk 'BEGIN {print a++,++a }'
  2. 0 2
复制代码
怎么也想不明白a++怎么会是0呢?在论坛里也看到相应的解释,比如说“后加”是先读取变量的值再加1,a的初始值是0,先读取0然后再加1,那a++不应该是1吗?还请大神指点,多谢!
作者: baby_神    时间: 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.
作者: Shell_HAT    时间: 2016-01-25 08:49
跟其它语言(比如C语言)里面的用法一样,没有什么特别的。
作者: reyleon    时间: 2016-01-25 09:48
a++ 与 ++a , 根据上下文,  都是自增1

不同的是, a++返回的是a自增前的值, ++a 返回的是a自增后的值
作者: Tianny_Xie    时间: 2016-01-25 10:35
注意开始变量a的值为0  a++返回的是a自增前的值, ++a 返回的是a自增后的值
作者: 我是一隻羊    时间: 2016-01-26 14:31
a++是先返回a的值再自增,++a是先自增再返回值.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2