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,3ccb707f4c91a5f2 X-Google-Attributes: gid103376,public From: bobduff@world.std.com (Robert A Duff) Subject: Re: Portability of Arithmetic (was: Java vs Ada 95) Date: 1996/10/16 Message-ID: #1/1 X-Deja-AN: 189808802 references: <325D7F9B.2A8B@gte.net> <1996Oct15.174526.1@eisner> organization: The World Public Access UNIX, Brookline, MA newsgroups: comp.lang.ada Date: 1996-10-16T00:00:00+00:00 List-Id: In article <1996Oct15.174526.1@eisner>, Larry Kilgallen wrote: >In article , bobduff@world.std.com (Robert A Duff) writes: >> How about portability of arithmetic? In Java, int is always exactly 32 >> bits 2's complement. In Ada, Integer is whatever the machine supports. >> And if I say "type T is range 1..100;" I might get 32-bit arithmetic, or >> I might get 8-bit arithmetic, or who-knows-what. > >And why should it matter ? If your specification is to cover that >range, a compiler is meeting that specification even if it converts >it to BCD to accomplish it on some _very_ old hardware. type T is range 1..100; X: T := ...; Y: T := ...; Average: T := (X + Y) / 2; Because the above code will work fine on some Ada compilers, and blow up on others (the addition will overflow using 8-bit signed arithmetic) if X and Y happen to be, say, 99. In Java, the above code is guaranteed to work. - Bob