Deutsch English Français Italiano |
<87zfu8idtc.fsf@nosuchdomain.example.com> 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: Keith Thompson <Keith.S.Thompson+u@gmail.com> Newsgroups: comp.lang.c Subject: Re: remark on defining size of basic types Date: Thu, 04 Apr 2024 22:22:23 -0700 Organization: None to speak of Lines: 50 Message-ID: <87zfu8idtc.fsf@nosuchdomain.example.com> References: <uukp2q$2v3$1@i2pn2.org> <uukrfp$7l0f$2@dont-email.me> <uul0q6$c4i$1@i2pn2.org> <uul461$d88r$1@dont-email.me> <uum354$1l27$1@i2pn2.org> <uum95f$lr8o$1@dont-email.me> <uumiu8$o78i$1@dont-email.me> <20240404200454.00003811@yahoo.com> <uunvah$15vot$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Fri, 05 Apr 2024 05:22:27 +0200 (CEST) Injection-Info: dont-email.me; posting-host="fec0c29a47b22dfbebf6304061a8ab80"; logging-data="1264067"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/WB6QesRHNr+3QWtYIDl+2" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) Cancel-Lock: sha1:f6LzwomdmGfkjriTIaIo0PbszQ8= sha1:/YBvPGbRquxU/EWrjac8/KHNWv0= Bytes: 3173 James Kuyper <jameskuyper@alumni.caltech.edu> writes: > On 4/4/24 13:04, Michael S wrote: >> On Thu, 4 Apr 2024 12:02:16 -0400 >> James Kuyper <jameskuyper@alumni.caltech.edu> wrote: >> >>> On 4/4/24 09:15, Janis Papanagnou wrote: >>> ... >>>> Since I remember C had always just defined a '<=' (or '>=') relation >>>> between the unsized basic integral data types. > ... >> He meant sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long >> long) > > That's not actually the case. In the above, you are not using <= as the > C operator, but simply to indicate relative order over multiple items; I > will do the same. What is specified is equivalent to the following > > LONGLONG_MIN <= LONG_MIN <= INT_MIN <= SHORT_MIN <= SCHAR_MAX > SCHAR_MAX <= SHORT_MAX <= INT_MAX <= LONG_MAX <= LONGLONG_MAX > UCHAR_MAX <= USHORT_MAX <= UINT_MAX <= ULONG_MAX <= ULONGLONG_MAX > > SCHAR_MAX <= UCHAR_MAX > INT_MAX <= UINT_MAX > LONG_MAX <= ULONG_MAX > LONGLONG_MAX <= ULONGLONG_MAX SHRT, not SHORT. LLONG, not LONGLONG. > The sizes are not required to be in the same order as the maximum > values, nor in the opposite order of the minimum values. If they were in > a different order, it would imply a lot of padding bits, which would be > very odd, but not prohibited. For completeness, the way it's described in the standard (quoting N3220 6.2.5p10-11) is : For any two integer types with the same signedness and different integer conversion rank (see 6.3.1.1), the range of values of the type with smaller integer conversion rank is a subrange of the values of the other type. The range of nonnegative values of a signed integer type is a subrange of the corresponding unsigned integer type, and the representation of the same value in each type is the same. -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com Working, but not speaking, for Medtronic void Void(void) { Void(); } /* The recursive call of the void */