[Python-Dev] Cannot declare the largest integer literal. (original) (raw)
Trent Mick trentm@activestate.com
Tue, 2 May 2000 13:47:17 -0700
- Previous message: [XML-SIG] Re: [I18n-sig] Re: [Python-Dev] Unicode debate
- Next message: [Python-Dev] Cannot declare the largest integer literal.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
i = -2147483648 OverflowError: integer literal too large i = -2147483648L int(i) # it is a valid integer literal -2147483648
As far as I traced back:
Python/compile.c::com_atom() calls Python/compile.c::parsenumber(s = "2147483648") calls Python/mystrtoul.c::PyOS_strtol() which
returns the ERANGE errno because it is given 2147483648 (which is out of range) rather than -2147483648.
My question: Why is the minus sign not considered part of the "atom", i.e. the integer literal? Should it be? PyOS_strtol() can properly parse this integer literal if it is given the whole number with the minus sign. Otherwise the special case largest negative number will always erroneously be considered out of range.
I don't know how the tokenizer works in Python. Was there a design decision to separate the integer literal and the leading sign? And was the effect on functions like PyOS_strtol() down the pipe missed?
Trent
-- Trent Mick trentm@activestate.com
- Previous message: [XML-SIG] Re: [I18n-sig] Re: [Python-Dev] Unicode debate
- Next message: [Python-Dev] Cannot declare the largest integer literal.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]