comp.lang.ada
 help / color / mirror / Atom feed
From: nrs5134@gmail.com
Subject: Should exceeding the range of Integer wrap around a la C?
Date: Mon, 21 May 2018 08:23:20 -0700 (PDT)
Date: 2018-05-21T08:23:20-07:00	[thread overview]
Message-ID: <7ba47ec1-28e7-43e1-83a0-2a4d2cf0fd92@googlegroups.com> (raw)

Hi all,

I'm brand-new to Ada coming from a Fortran & Python background - just starting to write some trivial tutorial programs. I'm trying to understand the output of following program (copied from the "Lovelace" Ada95 tutorial):

-- compute.adb
-- Demonstrate a trivial procedure, with another nested inside.
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;

procedure Compute is
   
   procedure Double(Item : in out Integer) is
   begin -- procedure Double
      Item := Item * 2;
   end Double;
   
   X : Integer := 1; -- Local variable X of type Integer
   
begin -- procedure Compute
   loop 
      Put(X);
      New_Line;
      Double(X);
   end loop;
end Compute;

I expect this program to print powers of 2 until `X` exceeds the range of Integer. Instead, it seems to "wrap around" with the following (abbreviated) output:
          1
          2
          4
      [...]          
  268435456
  536870912
 1073741824
-2147483648
          0
          0
      [...]
          0

I am compiling with GNAT 4.9.2 on a Debian Linux system using `gnat make compute` with no further compiler flags. Are my expectations wrong, or is this incorrect behavior?

Cheers,
NS

             reply	other threads:[~2018-05-21 15:23 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-21 15:23 nrs5134 [this message]
2018-05-21 15:27 ` Should exceeding the range of Integer wrap around a la C? Jacob Sparre Andersen
2018-05-21 15:45 ` Anh Vo
2018-05-21 16:46   ` Simon Wright
2018-05-21 18:47     ` Anh Vo
2018-05-21 15:57 ` Lucretia
2018-05-21 16:49   ` Simon Wright
2018-05-21 19:11 ` Paul Rubin
2018-05-22  0:39   ` Jere
2018-05-22  0:58     ` Dan'l Miller
2018-05-22  1:36     ` Paul Rubin
2018-05-21 20:43 ` nrs5134
2018-05-22 17:52   ` Björn Lundin
2018-05-22 20:11     ` nrs5134
2018-05-22 20:23       ` Björn Lundin
2018-05-23  7:35       ` Dmitry A. Kazakov
replies disabled

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