Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <87r0cnq46s.fsf@bsb.me.uk>
Deutsch   English   Français   Italiano  
<87r0cnq46s.fsf@bsb.me.uk>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Ben Bacarisse <ben@bsb.me.uk>
Newsgroups: comp.lang.c
Subject: Re: The difference between strtol() and strtoul() ?
Date: Sun, 23 Jun 2024 12:38:51 +0100
Organization: A noiseless patient Spider
Lines: 64
Message-ID: <87r0cnq46s.fsf@bsb.me.uk>
References: <v51d1l$2fklr$1@news.xmission.com>
	<v540t9$2gsdu$1@news.xmission.com> <20240621182839.00000dc4@yahoo.com>
	<20240621185314.00004fda@yahoo.com> <87o77uqktg.fsf@bsb.me.uk>
	<20240623121952.00005fa9@yahoo.com>
MIME-Version: 1.0
Content-Type: text/plain
Injection-Date: Sun, 23 Jun 2024 13:38:51 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="8e298ef9233142ad2625f347aab31424";
	logging-data="349947"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+Eg0scDi67phy94KlLqQniNZ+M53YCvTg="
User-Agent: Gnus/5.13 (Gnus v5.13)
Cancel-Lock: sha1:m+JB7T5+anFnxMR46OprpSQABpQ=
	sha1:1LnFBQ//siGNVIaaJTKrMeSicJU=
X-BSB-Auth: 1.cd294adcdd5b9c71ca4c.20240623123851BST.87r0cnq46s.fsf@bsb.me.uk
Bytes: 3723

Michael S <already5chosen@yahoo.com> writes:

> On Fri, 21 Jun 2024 18:15:07 +0100
> Ben Bacarisse <ben@bsb.me.uk> wrote:
>
>> Michael S <already5chosen@yahoo.com> writes:
>> 
>> > On Fri, 21 Jun 2024 18:28:39 +0300
>> > Michael S <already5chosen@yahoo.com> wrote:
>> >  
>> >> On Fri, 21 Jun 2024 13:58:01 -0000 (UTC)
>> >> gazelle@shell.xmission.com (Kenny McCormack) wrote:  
>> >> > 
>> >> > Yeah, now I get it.  You really only need strtoimax() and
>> >> > strtoumax().   
>> >> 
>> >> Which are? uunfortunately, not part of C standard.
>> >>   
>> >> > A result of any smaller type can be obtained by calling one of
>> >> > these functions and storing the result in an object of the
>> >> > smaller type. 
>> >> 
>> >> Or check for range and handle out of range values as appropriate by
>> >> situation.  
>> >
>> > BTW, I don't know what The Standard says about out-of-range inputs,
>> > but at least https://en.cppreference.com/w/c/string/byte/strtol
>> > does not say anything certain. especially about what stored in
>> > *str_end.  
>> 
>> It says what value should be returned.  That's something certain!
>>
>
> In case of strtol, yes. 
> In case of strtoul it also says what value should be returned, but
> plain reading of cppreference.com text (at least *my* plain reading)
> does not match observed behaviour. The text on cppreference.com
> resembles Standard text, but does not match it.

Ah.  What's the discrepancy you see?

> Also, at least to me, Standard text itself appear very far from clear
> and way too open to interpretations.
> My own interpretation would be that for any negative input strtoul()
> should return ULONG_MAX and set errno to ERANGE. None of the actual
> implementation that I tested behaves in this manner.

I don't get that from the text.  There is, after all, no "negative
input".  There is a "subject sequence" which, if it starts with a minus
sign, causes the "value resulting from the conversion is negated (in the
return type)" which seems clear enough.

> It seems, the problem is of what is considered "range of representable
>  values" for unsigned type is by itself open to interpretations.
>
> IMHO, even if in some part of the standard  there exists text that
> clearly states that "range of representable values for unsigned long =
> [-ULONG_MAX:ULONG_MAX]" it is worth repeating that in the section that
> defines strtol, because it is at all non-intuitive.

I don't get what you are saying here.  The range of values is [0:ULONG_MAX].

-- 
Ben.