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=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1014db,4873305131bf4d94 X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,4873305131bf4d94 X-Google-Attributes: gid103376,public X-Google-Thread: 109fba,4873305131bf4d94 X-Google-Attributes: gid109fba,public From: fred@genesis.demon.co.uk (Lawrence Kirby) Subject: Re: Porting Experiences (was Ada and Pascal etc ) Date: 1997/11/05 Message-ID: <878737723snz@genesis.demon.co.uk>#1/1 X-Deja-AN: 288086299 References: <345E3ACD.A15@gsg.eds.com> <878648818snz@genesis.demon.co.uk> <345F9728.D61@gsg.eds.com> X-Mail2News-User: fred@genesis.demon.co.uk X-Complaints-To: abuse@demon.net X-Mail2News-Path: genesis.demon.co.uk X-Trace: mail2news.demon.co.uk 878738524 13030 fred genesis.demon.co.uk Organization: none Reply-To: fred@genesis.demon.co.uk Newsgroups: comp.lang.ada,comp.lang.c,comp.lang.c++ Date: 1997-11-05T00:00:00+00:00 List-Id: In article <345F9728.D61@gsg.eds.com> nospam@gsg.eds.com "Seymour J." writes: >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. Please take a look at the ISO C standard before making bold statements such as this. These limits are laid in stone within the standard, for your reference in section 5.2.4.2.1. Code following these guidelines is guaranteed to work on *any* conforming C compiler with *any* word size. You don't get more portable that that within the boundaries of a single language. >The C standard makes the size of an int implimentation dependent, Yes, it is implementatio-defined but with firm minimum limits, exactly as stated above. >and on >16-bit machines it is normally 16. True. >On 64-bit machines int is usually 64, >and if you want 32 you specify short. That's an unwarranted assumption which will cause code to be non-portable so if you want to write portable code you don't make it. >Now, admittedly this will change with the new standard, but as long as >it is still a draft it has nothing to do with the current language. You need to take a look at what the standard for the current language actually says. -- ----------------------------------------- Lawrence Kirby | fred@genesis.demon.co.uk Wilts, England | 70734.126@compuserve.com -----------------------------------------