POV-Ray : Newsgroups : povray.off-topic : Mysteries of the universe : Re: Mysteries of the universe Server Time
6 Sep 2024 07:17:02 EDT (-0400)
  Re: Mysteries of the universe  
From: clipka
Date: 4 Sep 2009 05:08:35
Message: <4aa0d913$1@news.povray.org>
Chambers schrieb:
> Only if you assume 'char' to be a text character, rather than an 8 bit 
> byte (which is what it really is, just as 'int' isn't really a true 
> integer, but rather a register-sized word on whatever machine you're 
> compiling for).

I really must object here for nitpicking's sake:


char is /not/ an 8 bit byte.

char instead is a data object /at least/ 8 bit in size and being a 
multiple of the architecture's basic storage unit. The exact size is 
defined in the compiler's <types.h> as CHAR_BIT.

On some exotic 7-bit architecture, for instance, char would have to be 
at least 14 bits in size.

There /are/ real-world architectures that do have 16-bit char types 
because they cannot individually address smaller words.

On such architectures, it is vital to note that sizeof() always returns 
a data object's size in multiples of whatever size a char occupies.


Furthermore, it should be noted that signed char and unsigned char /are/ 
integer types, and so are the short, int, long and long long types (both 
unsigned and signed, even if not explicitly qualified as such).


And no, "int" it is /not/ a register-sized word, but rather an integer 
occupying (but not necessarily fully utilizing) at least the "natural 
size suggested by the architecture of the execution environment", while 
at the same time guaranteeing to store any integer number in the range 
from -32767 (sic!) to 32767, with the exact limits being defined as 
INT_MIN and INT_MAX in <types.h>.


C data types can be real fun once you're leaving the safety of 
mainstream PC architecture :-P


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.