Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #152650
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: What is the rank of size_t ? |
| Date | 2020-06-03 11:33 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <86367cov78.fsf@linuxsc.com> (permalink) |
| References | (1 earlier) <raop58$1hn8$1@gioia.aioe.org> <86pnamrs9r.fsf@linuxsc.com> <rau761$8og$1@gioia.aioe.org> <86k10rpqum.fsf@linuxsc.com> <rb2ppj$155s$1@gioia.aioe.org> |
Real Troll <real.troll@trolls.com> writes:
> On 01/06/2020 01:33, Tim Rentsch wrote:
>
>> Real Troll <Real.Troll@trolls.com> writes:
>>
>>> On 30/05/2020 04:55, Tim Rentsch wrote:
>>>
>>>> Real Troll <real.troll@trolls.com> writes:
>>>>
>>>>> On 27/05/2020 13:49, Spiros Bousbouras wrote:
>>>>>
>>>>>> Specifically , if a has type int and b has type size_t , can
>>>>>> a + b overflow i.e. cause undefined behaviour ?
>>>>>
>>>>> Try running this program to see what happens? I use 64 bit compiler on
>>>>> a 64 bit machine:
>>>>>
>>>>> <******************************************************************>
>>>>>
>>>>> #include <stdio.h>
>>>>> #include <stdlib.h>
>>>>> #include <limits.h>
>>>>> #include <float.h>
>>>>>
>>>>> int main(void)
>>>>> {
>>>>> const size_t N = 18446744073709551615;
>>>>> int a = 100;
>>>>> size_t result = N + a;
>>>>> printf("SIZE_MAX is: = %zu\n", SIZE_MAX);
>>>>> printf("Value of result (N + a) = %zu\n", result);
>>>>>
>>>>> return 0;
>>>>> }
>>>>>
>>>>> <******************************************************************>
>>>>
>>>> Do you get two program errors? That's what I get.
>>>
>>> No errors in Visual Studio 2019. [...]
>>
>> Well that explains at least some of it. What do you get if
>> you run this:
>>
>> #include <stdio.h>
>> #include <stdint.h>
>>
>> int
>> main(){
>> printf( "INTMAX_MAX is %td\n", INTMAX_MAX );
>> return 0;
>> }
>>
>> ?
As Ike Naar noted, the conversion sequence %td should instead
have been %jd.
> On a 64 bit machine using 64 bit compiler:
>
> INTMAX_MAX is 9223372036854775807
>
>
> For 32 bit compiler (on 64 bit machine), I was getting errors but I made
> small changes and I got:
>
> INTMAX_MAX is 9223372036854775807
>
> The changes I made were:
>
> printf("INTMAX_MAX is %I64d\n", INTMAX_MAX);
> printf("INTMAX_MAX is %lld\n", INTMAX_MAX);
Oh yes, the famous %I64d. I expect both of these give an
accurate output for the value.
Armed with these new facts, we may conclude the Visual Studio
implementation is not conforming, in two different ways. The
first is that 18446744073709551615 is accepted as a decimal
constant, even though it is larger than 9223372036854775807,
which is the largest value of the largest signed type. Writing
the constant 18446744073709551615 without a trailing u or U
should have been given a diagnostic.
The second is that SIZE_MAX is allowed as a (defined) identifier,
even though <stdint.h> has not been included. Only <stdint.h>
may define SIZE_MAX. The use of SIZE_MAX without <stdint.h>
having been included also merits a diagnostic.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
What is the rank of size_t ? Spiros Bousbouras <spibou@gmail.com> - 2020-05-27 12:49 +0000
Re: What is the rank of size_t ? Spiros Bousbouras <spibou@gmail.com> - 2020-05-27 13:54 +0000
Re: What is the rank of size_t ? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-05-27 11:14 -0400
Re: What is the rank of size_t ? Spiros Bousbouras <spibou@gmail.com> - 2020-05-27 19:03 +0000
Re: What is the rank of size_t ? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-05-27 18:09 -0400
Re: What is the rank of size_t ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-05-30 01:54 -0700
Re: What is the rank of size_t ? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-05-27 09:59 -0400
Re: What is the rank of size_t ? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-05-27 07:37 -0700
Re: What is the rank of size_t ? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-05-27 11:02 -0400
Re: What is the rank of size_t ? Vir Campestris <vir.campestris@invalid.invalid> - 2020-05-27 20:46 +0100
Re: What is the rank of size_t ? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-05-27 14:30 -0700
Re: What is the rank of size_t ? Real Troll <real.troll@trolls.com> - 2020-05-28 06:35 -1000
Re: What is the rank of size_t ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-05-29 20:55 -0700
Re: What is the rank of size_t ? Real Troll <Real.Troll@trolls.com> - 2020-05-30 08:05 -1000
Re: What is the rank of size_t ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-05-31 17:33 -0700
Re: What is the rank of size_t ? Real Troll <real.troll@trolls.com> - 2020-06-01 01:45 -1000
Re: What is the rank of size_t ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-06-03 11:33 -0700
Re: What is the rank of size_t ? Ike Naar <ike@otaku.sdf.org> - 2020-06-01 20:51 +0000
Re: What is the rank of size_t ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-06-03 11:16 -0700
Re: What is the rank of size_t ? raltbos@xs4all.nl (Richard Bos) - 2020-05-31 09:12 +0000
Re: What is the rank of size_t ? Real Troll <reasl.troll@trolls.com> - 2020-05-31 01:30 -1000
Re: What is the rank of size_t ? raltbos@xs4all.nl (Richard Bos) - 2020-06-04 20:40 +0000
Re: What is the rank of size_t ? Real Troll <real.troll@trolls.com> - 2020-06-04 12:50 -1000
Re: What is the rank of size_t ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-05-30 00:55 -0700
Re: What is the rank of size_t ? Bonita Montero <Bonita.Montero@gmail.com> - 2020-06-02 10:06 +0200
csiph-web