From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,4873305131bf4d94 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,4873305131bf4d94 X-Google-Attributes: gid1014db,public X-Google-Thread: 109fba,4873305131bf4d94 X-Google-Attributes: gid109fba,public From: Craig Franck Subject: Re: Porting Experiences (was Ada and Pascal etc ) Date: 1997/11/05 Message-ID: <63ok21$cjd@bgtnsc02.worldnet.att.net>#1/1 X-Deja-AN: 287075864 References: <345E3ACD.A15@gsg.eds.com> <878648818snz@genesis.demon.co.uk> <345F9728.D61@gsg.eds.com> Organization: AT&T WorldNet Services Newsgroups: comp.lang.ada,comp.lang.c,comp.lang.c++ Date: 1997-11-05T00:00:00+00:00 List-Id: "Shmuel (Seymour J.) Metz" wrote: >Lawrence Kirby wrote: >> >> The portability implications of this are small or non-existent (there may >> be performace implications in rare circumstances, and issues relating to >> data sizes and external data formats). As ever the C language is designed >> with the assumption that the programmer knows what he is doing. The use >> of ranges implies that you know beforehand what those ranges will be. >> In C you follow a set of rules: >> >> 1. If the range is contained within -32767 to 32767 then you use int >> >> 2. If the range is contained within -2147483647 to 2147483647 then you >> use long. >> >> 3. If you want to minimise space usage (such as for array elements or >> structure members) and the range is contained within -32767 to 32767 then >> you can use short. For -127 to 127 you can use signed char. >> >> 4. The unsigned types have larger positive ranges if your range is >> non-negative. Notably unsigned char typically corresponds to the >> notion of "byte" in most languages. > >Those rules only apply if you are going from one 32-bit machine to >another; they have nothing to do with the definition of C itself and are >inapplicable when you have to move between different word sizes. Huh? Those limits are contained in the standard. 5.2.4.2 Numerical limits. ... 5.2.4.2.1 Sizes of integral types ... Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign. ... -- minimum value for an object of type int INT_MIN -32767 -- maximum value for an object of type int INT_MAX +32767 >The C standard makes the size of an int implimentation dependent, and on >16-bit machines it is normally 16. On 64-bit machines int is usually 64, >and if you want 32 you specify short. Yes, but portable ranges are defined by the standard, and that's what you should go by. -- Craig clfranck@worldnet.att.net Manchester, NH I try to take one day at a time, but sometimes several days attack me at once. -- Ashleigh Brilliant