Re: print ASCII value of a character to cout ?
On Feb 25, 7:29 am, Lourens Veen <lour...@rainbowdesert.net> wrote:
While we're at it, are uint8 (in inttypes.h) and char supposed to be
separate types?
They're not in C (and the name of the header is <stdint.h> in
the C standard). The types don't yet exist in C++, and I'm not
sure what the draft C++ standard says about them, but a priori,
I rather suspect that they are typedef's there as well. Unlike
the case of wchar_t, it seems more coherent with their overall
semantic (e.g. possibly absent).
On my implementation (gcc 4.0.3) the following
programme outputs 'A':
#include <iostream>
#include <ostream>
#include <inttypes.h>
int main() {
uint8_t x = 65;
std::cout << x << std::endl;
return EXIT_SUCCESS;
}
Well, since you're using some implementation defined header,
it's hard to say. If you use the <stdint.h> from C, it's the
correct choice.
Since uint8_t is supposed to be an 8-bit integer, and thus have
nothing to do with characters,
The problem is that it is supposed to be a typedef for an
existing integral type, present if (and only if) the
implementation has a corresponding type. (The presence can be
tested by means of "#ifdef UINT8_MAX", or something along those
lines, I think.)
I would expect it to print '65', but
unfortunately it doesn't. Is this supposed to happen, and if so, how
do I get a real 8-bit int type that actually behaves like an integer
in all situations?
I suppose that an implementation could define an extended
integral type which had 8 bits, and wasn't a char, and then make
uint8_t a typedef for that. But it's certainly not required in
C. Should C++ do it? I don't know, but it seems like asking a
lot, for very little return. You might raise the question in
the standards group, however, or directly with the committee.
BTW: no one has mentionned it, but the old trick used in untyped
languages like AWK to force a variable to act like a number also
works:
std::cout << x + 0 << std::endl ;
(It's really a clever bit of obfuscation, but those of us who
grew up with such languages see through it immediately:-). Do
something with it that only makes sense for a number, and it
becomes a number.)
--
James Kanze (Gabi Software) email: james.kanze@gmail.com
Conseils en informatique orient?e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S?mard, 78210 St.-Cyr-l'?cole, France, +33 (0)1 30 23 00 34
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]