bug-gawk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-gawk] Variable issue substr


From: Filimonov Vadim
Subject: Re: [bug-gawk] Variable issue substr
Date: Thu, 14 May 2015 16:05:06 +0300

Hello.

It's really helpful information!
I didn't mind about string comparsion in the loop.
I thought that 'i = a1' and 'i <= b1' must force variables to number.
My mistake.
Thank you

14.05.2015, 15:40, "Aharon Robbins" <address@hidden>:
> Hi.
>>  Sorry for HTML.
>>  Thank you. This hack with adding zero works fine.
>>  But I really can't understand the root cause of problem.
>>  When b1=9, in loop condition this variable converting to number.
>>  So there must be i<=9. Why does i going out of the range?
>
> OK, here's your original program:
>
> BEGIN {
>         a = "2345"
>         b = "6789"
>         a1 = substr(a, length(a), 1)
>         b1 = substr(b, length(b), 1)
>         print a1, b1
>         for (i = a1; i <= b1; i++) {
>                 print i
>         }
> }
>
> Let's think about what's going on.  a1 and b1 are both strings.
> NOT numbers. When `i = a1' is done, i also becomes a string.  The loop
> body prints i.
>
> Then we hit i++. Now it gets interesting. i is converted to a number
> and incremented. The new numeric value is then converted back to a string
> for the comparison with b1.
>
> The comparison is <=, so when i hits 9, "9" <= "9" is true, and the loop
> continues.  When i hits 10, it's converted to "10", and "10" <= "9" is
> also true (*string* comparison), so the loop continues until i hits 90,
> at which point "90" <= "9" is no longer true, and the loop terminates.
>
> Hope this helps,
>
> Arnold



reply via email to

[Prev in Thread] Current Thread [Next in Thread]