Size of variables in awk

Wayne Sierke ws+freebsd-questions at au.dyndns.ws
Wed Mar 3 01:02:23 PST 2004


On Wed, 2004-03-03 at 18:34, Dan Nelson wrote:
> In the last episode (Mar 03), Wayne Sierke said:
> > It seems I've run into the 32-bit signed number wall in awk
> > (5.2-RELEASE).
> > 
> > My totals are maxing out at 2147483648.
> > 
> > Would anyone happen to know whether that's really the case (that awk is
> > only implemented with 32-bit number capability - unfortunately I don't
> > have any other awks nearby to verify nor can I find any reference info
> > that indicates) and/or can suggest a way around it?
> 
> Seems to works fine on -current:
> 
> $ jot 8 30 | awk '{ print 2^$1 }'
> 1073741824
> 2147483648
> 4294967296
> 8589934592
> 17179869184
> 34359738368
> 68719476736
> 137438953472

Ah, ok. Same for me on 5.2-RELEASE. More info:

I'm using the printf function in awk but something ain't right:

# jot 4 30 | awk '{ printf("%u\n", 2^$1-1) }'
1073741823
2147483647
2147483648
2147483648

# jot 4 30 | awk '{ printf("%lu\n", 2^$1-1) }'
1073741823
2147483647
2147483648
2147483648

# jot 4 30 | awk '{ printf("%llu\n", 2^$1-1) }'
35185445830655
35186519572479
35186519572480
35186519572480


Thoughts?


Wayne




More information about the freebsd-questions mailing list