Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: two mysteries
On Nov 6, 2:22pm, Ray Andrews wrote:
}
} But what ended up happening is that the type check reported it as (can't
} recall) no longer integer, and I did the check just before the fatal
} division, so something had changed it previous to that.
My only guess is that in some cases the assignment occurs before the
declaration:
torch% START_IDX=1+((idx-1)/page_hight)*page_hight
torch% print ${(t)START_IDX}
scalar
torch% integer START_IDX
zsh: division by zero
torch% print ${(t)START_IDX}
integer
torch%
The value currently in the scalar $START_IDX is evaluated when the type
changes to integer, which causes the division by zero.
Interestingly, bash allows integers to have non-integer values, so
this is not an error there:
$ foo='1/0'
$ typeset -i foo
$ echo $foo
1/0
$ typeset -p foo
declare -i foo="1/0"
$
This is because bash does all the arithmetic only at assignment time.
} Didn't I read that
} there's a difference between 'typeset -i' and 'integer'?
Read where ...? Doc:
integer [ {+|-}Hghlprtux ] [ {+|-}LRZi [ N ] ] [ NAME[=VALUE] ... ]
Equivalent to typeset -i, except that options irrelevant to
integers are not permitted.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author