Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #395816
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: type of decimal constants in msvc |
| Date | 2025-12-15 08:06 -0800 |
| Organization | A noiseless patient Spider |
| Message-ID | <86345bvifp.fsf@linuxsc.com> (permalink) |
| References | <1097ivh$ntii$1@dont-email.me> <87jz2gbn19.fsf@example.invalid> |
Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:
> Thiago Adams <thiago.adams@gmail.com> writes:
>
>> The type used by MSVC compiler seems not follow the C standard.
>>
>> I choose the number 2147483648 that is the next number after max
>> signed i32.
>>
>> I was expecting "signed long long" (the next signed type) but MSVC
>> instead uses unsigned long (that is 32 bits)
>>
>>
>> #define is_type(T, E) _Generic(E, T : 1 , default:0 )
>>
>> static_assert(is_type(unsigned long, 2147483648));
>>
>> int main(){}
>>
>> https://godbolt.org/z/EqKWroecj
>>
>>
>> The the standard says
>> "The type of an integer constant is the first of the
>> corresponding list in which its value can be represented."
>>
>> No suffix: The potential types, in order, are int, long int, and
>> long long int.
>
> Yes, that appears to be a bug.
>
> I tried an example myself with Visual Studio 2022. By default, it
> gives 2147483648 a type of unsigned long.
>
> The default configuration is "/std:c17". I thought it might be an
> "extension" that I can disable with "/Za", but astonishingly that
> produces a fatal error:
>
> error D8016: '/Za' and '/std:c17' command-line options are
> incompatible
>
> *Maybe* there's some combination of options that will persuade it to
> behave correctly.
>
>> So I think when "cloning" MSVC I need to not follow the standard.
>
> I suppose, but it depends on why you want to clone MSVC and whether
> you need to replicate its bugs.
>
> I don't know whether this bug has been reported to Microsoft. If
> not, it should be.
>
>> In GCC the type is long (that is 64 bits)
>>
>> https://godbolt.org/z/eTKE19r8K
>
> On targets with 32-bit long, it should be long long.
It might be the case that the behavior observed is a consequence of
Microsoft never fully embracing C99. Under C90 rules, the type of
2147483648 (assuming 32-bit longs and unsigned longs) would indeed
be unsigned long.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
type of decimal constants in msvc Thiago Adams <thiago.adams@gmail.com> - 2025-09-02 17:10 -0300
Re: type of decimal constants in msvc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-09-02 13:46 -0700
Re: type of decimal constants in msvc Thiago Adams <thiago.adams@gmail.com> - 2025-09-02 20:39 -0300
Re: type of decimal constants in msvc Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-12-15 08:06 -0800
Re: type of decimal constants in msvc Thiago Adams <thiago.adams@gmail.com> - 2025-12-15 14:03 -0300
Re: type of decimal constants in msvc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-12-15 14:14 -0800
Re: type of decimal constants in msvc Lawrence D’Oliveiro <ldo@nz.invalid> - 2025-09-03 06:42 +0000
Re: type of decimal constants in msvc BGB <cr88192@gmail.com> - 2025-09-03 10:59 -0500
Re: type of decimal constants in msvc Michael S <already5chosen@yahoo.com> - 2025-09-04 15:21 +0300
Re: type of decimal constants in msvc Thiago Adams <thiago.adams@gmail.com> - 2025-09-03 16:04 -0300
Re: type of decimal constants in msvc Thiago Adams <thiago.adams@gmail.com> - 2025-12-19 08:43 -0300
Re: type of decimal constants in msvc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-12-19 04:15 -0800
Re: type of decimal constants in msvc Thiago Adams <thiago.adams@gmail.com> - 2025-12-19 09:49 -0300
Re: type of decimal constants in msvc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-12-19 12:26 -0800
Re: type of decimal constants in msvc Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-12-22 05:05 -0800
Re: type of decimal constants in msvc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-12-22 12:01 -0800
Re: type of decimal constants in msvc Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-03-01 18:32 -0800
Re: type of decimal constants in msvc Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-03-01 19:22 -0800
csiph-web