From: Spiro Trikaliotis (ml-cbmhackers_at_trikaliotis.net)
Date: 2005-04-01 13:27:13
Hello Uz,
* On Fri, Apr 01, 2005 at 12:45:53PM +0200 Ullrich von Bassewitz wrote:
> My suggestion for every C programmer is to keep a copy of the standard
> available and have a look into it. It contains a lot of interesting
> things and debunks a whole lot of myths many C "programmers" believe:
One problem with this is that some people learned C before C89. That's
where many myths come from.
> * Did you know that C does not require a char to have 8 bits? It does not
> require ints to have 16, and longs to have 32 bits either.
I do. A char must have enough bits to hold all characters of the base
charset of the system, and
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
is required.
But the statement "a char is always enough to hold a byte" should be
correct if you remember that a byte is not always an octett.
> * Did you know that a NULL pointer must not be represented by a binary zero,
> and that - despite this fact - a compare like
>
> if (p == 0) ...
>
> does still test p for the NULL pointer? Even
>
> if (p) ...
>
> is a correct test for the NULL pointer, even on platforms where the NULL
> pointer is represented by something like 0x12345678.
I now. This difference might be needed for example with machines with a
segmented architecture, where a special segment might indicate a
null-pointer.
> * Did you know that a main program declaration of
>
> void main (void)
>
> is non portable and may be refused by the compiler?
Yes, because it does not return an int.
int main(void)
must be accepted, as well as
int main(int argc, char **argv)
Everything else is non-standard.
> * Did you know that
>
> char f = 5["abcdefg"];
>
> is completely legal C?
Yes, with f == 'f' afterwards. Thats because x[y] is equivalent to *(x+y)
> It's always better to know instead of just believe. And the ISO C
> standard is the way to knowledge for C programmers.
But it's hard with pre-ANSI, C89, C90, the C++ variants which are very
similar, to always keep up with the correct standard. ;-)
BTW: I did not fail your test, did I? Where can I get my diploma? ;-)
Regards,
Spiro.
--
Spiro R. Trikaliotis
http://www.trikaliotis.net/
Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.