Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #4636
| From | Victor Bazarov <v.bazarov@comcast.invalid> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: literals for an int128 class |
| Date | 2011-05-03 16:51 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <ippps8$cfo$1@dont-email.me> (permalink) |
| References | <8ec2c079-9c65-462a-a4b2-af8f2f0422ce@p7g2000yqd.googlegroups.com> |
On 5/3/2011 4:39 PM, cps wrote:
> I am considering writing an int128 class as a programming exercise.
> Before I start (and I have a fair idea of how to do it) I was
> wondering what I can do about literals and the assignment operator.
Judging from the excerpt below, you're talking about the symbol '=' used
for initialization of objects at the time of their definition, and *NOT*
about the assignment operator.
> I
> would like to be able to use integer literals with the assignment and
> other operators with literals that are sized at 128 bits.
>
> E.g. I'd like to be able to do:
>
> uint128 myInt128 = 184467440737095516160;
That is called initialization.
> Note that the foregoing literal would produce an error (correctly
> so) if I attempted to assign it to an uint64 because it is (2^64) *
> 10.
>
> Is there any way I can set it up to deal with large literals?
Not portably. Literals are defined by the standard/compiler and unless
your compiler already provides a 128 bit signed or unsigned integer
literal, you can't introduce it. If 'uint128' is totally your own
custom class, then your best bet is to introduce a constructor from a
character string (uint128::uint128(const char*)) and surround those
digits with double quotes:
uint128 myInt128("184467440737095516160");
*Some* compilers can offer built-in integral types of that size and with
those they usually offer a way to specify a literal by means of some
suffix. For instance, MS used to have i64 suffix before 64 bit targets
became common:
int64_t ms64bitInteger = 1234567890i64; // if memory serves
> Or am I going to have to use strings and parse them?
Most likely.
T
--
I do not respond to top-posted replies, please don't ask
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
literals for an int128 class cps <chrissusie8@gmail.com> - 2011-05-03 13:39 -0700
Re: literals for an int128 class Victor Bazarov <v.bazarov@comcast.invalid> - 2011-05-03 16:51 -0400
Re: literals for an int128 class Ian Collins <ian-news@hotmail.com> - 2011-05-04 08:53 +1200
Re: literals for an int128 class Pete Becker <pete@versatilecoding.com> - 2011-05-03 17:17 -0400
Re: literals for an int128 class Michael Doubez <michael.doubez@free.fr> - 2011-05-04 01:38 -0700
Re: literals for an int128 class Ian Collins <ian-news@hotmail.com> - 2011-05-04 21:15 +1200
Re: literals for an int128 class Michael Doubez <michael.doubez@free.fr> - 2011-05-06 01:03 -0700
Re: literals for an int128 class Pete Becker <pete@versatilecoding.com> - 2011-05-06 08:00 -0400
Re: literals for an int128 class Victor Bazarov <v.bazarov@comcast.invalid> - 2011-05-06 09:30 -0400
Re: literals for an int128 class Michael Doubez <michael.doubez@free.fr> - 2011-05-06 08:00 -0700
csiph-web