comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <spam@spam.com>
Subject: Re: Division by zero
Date: Sun, 12 Jun 2005 16:55:05 GMT
Date: 2005-06-12T16:55:05+00:00	[thread overview]
Message-ID: <JNZqe.3031$NX4.2109@newsread1.news.pas.earthlink.net> (raw)
In-Reply-To: <wccbr6bhg9u.fsf@shell01.TheWorld.com>

Robert A Duff wrote:
> Well, in Ada 83, the "class of errors" was "divide by zero".
> In Ada 95, that was split into "divide by zero in a static expression"
> and "divide by zero in a nonstatic expression" -- the former is a
> compile time error, whereas the latter is a run-time error.
> There's nothing illogical about splitting it further:
> "divide by zero when the Right operand is static" could be defined
> as a compile-time error.  The problem is that if you try to define
> all the compile-time-detectable cases very precisely, it gets quite
> complicated.  And however you define it, it *has* to be conservative.

The problem, it seems to me, is that the developer may deliberately 
write a division of a variable by static zero for a number of reasons. 
He may want it to raise Constraint_Error at run time, or may have 
redefined "/" for the type of the variable to do something meaningful if 
the divisor is zero.

This latter case invalidates an earlier example. The following should 
compile and output Integer'Last before terminating normally:

with Ada.Text_IO;
procedure Zero_Div is
    function "/" (Left : Integer; Right : Integer) return Integer is
       -- null;
    begin -- "/"
       if Right = 0 then
          return Integer'Last;
       else
          return Left / Right;
       end if;
    end "/";

    A : constant Integer := 23;
    B : constant Integer :=  0;
begin -- Zero_Div
    Ada.Text_IO.Put_Line (Item => Integer'Image (A / B) );
end Zero_Div;

-- 
Jeff Carter
"Don't knock masturbation. It's sex with someone I love."
Annie Hall
45



  reply	other threads:[~2005-06-12 16:55 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-11 21:03 Division by zero Lurker
2005-06-12  2:00 ` David C. Hoos, Sr.
2005-06-12  3:04   ` Lurker
2005-06-12  8:39     ` Dmitry A. Kazakov
2005-06-12  9:43       ` Lurker
2005-06-12 10:36         ` Marius Amado Alves
2005-06-12 11:53         ` Dmitry A. Kazakov
2005-06-13  8:03         ` Ole-Hjalmar Kristensen
2005-06-12 13:10       ` Robert A Duff
2005-06-12 16:55         ` Jeffrey Carter [this message]
2005-06-13  3:22           ` Keith Thompson
2005-06-14  2:14             ` Jeffrey Carter
2005-06-13  8:47           ` Lurker
2005-06-14  2:19             ` Jeffrey Carter
2005-06-14  8:35               ` Keith Thompson
2005-06-13 12:19           ` Robert A Duff
2005-06-14  2:31             ` Jeffrey Carter
2005-06-14  8:21             ` Lurker
2005-06-14 20:22               ` Randy Brukardt
2005-06-28 21:22               ` Robert A Duff
2005-06-29  5:50                 ` Lurker
2005-06-29 13:27                   ` Robert A Duff
2005-06-29 13:54                     ` Dmitry A. Kazakov
2005-06-29 16:03                       ` Robert A Duff
2005-06-30  1:19                     ` Lurker
2005-06-30 11:16                       ` Stuart Palin
2005-06-29 13:50                   ` Dmitry A. Kazakov
2005-06-29 16:07                     ` Robert A Duff
2005-06-30  8:27                       ` Dmitry A. Kazakov
2005-06-29  9:20                 ` Lurker
2005-06-29  9:49                   ` Christoph Grein
2005-06-29 10:40                     ` Lurker
2005-06-29 11:04                       ` Jeff Creem
2005-06-29 12:28                         ` Martin Dowie
2005-06-29 13:40                   ` Robert A Duff
     [not found]     ` <5sana1pm436l6vboifijqblu0irf84afkr@4ax.com>
2005-06-12 17:38       ` Simon Wright
2005-06-12 12:21 ` Robert A Duff
2005-06-12 22:53 ` Georg Bauhaus
2005-06-13  8:34   ` Lurker
2005-06-13  8:54     ` Marius Amado Alves
2005-06-13 17:59       ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox