Archives

- Beowulf
- Beowulf Announce
- Scyld-users
- Beowulf on Debian

# How can I compute the range of signed and unsigned types

Many of your questions may have already been answered in earlier discussions or in the FAQ. The search results page will indicate current discussions as well as past list serves, articles, and papers.

Search

Wed Apr 18 08:50:51 PDT 2001

```Chris Richard Adams wrote:
>
> This is my point - how can I compute this so my code could run on any
> machine. I need to show the range possible on any machine...how can I
> compute that?
>
> Thanks,
> Chris

Well either the system will support IEEE floating point or it will not.
If it does you are ok. If not you will have to know what the quirks of
the floating point format are.

It is easy or difficult as that.

> -----Original Message-----
> From: James Cownie [mailto:jcownie at etnus.com]
> Sent: Wednesday, April 18, 2001 10:19 AM
> To: Beowulf (E-mail)
> Subject: Re: How can I compute the range of signed and unsigned types
>
> Jag wrote : -
>
> > Those sizes are defined for the C language.  In order words, no
> > matter if you're on a 32-bit machine or a 64-bit machine, an int is
> > always going to be 32-bit and thus have the same numeric range
> > because the standards say so.  This goes for all the basic types,
> > not just int's.
>
> No, the C standard says nothing of the sort.
>
> All the C standard says is that
>
> 1) sizeof (char)  == 1
> 2) sizeof (short) >= sizeof (char)
> 3) sizeof (int)   >= sizeof (short)
> 4) sizeof (long)  >= sizeof (int)
> 5) sizeof (long long) >= sizeof (long).
>
> It also does not specify that the representation of an int is two's
> complement, so even on machines with the same sizeof(int) the legal
> ranges could differ.
>
This Is a subtile point most miss.

--
Alvin Starr                   ||   voice: (416)585-9971