OT: Requesting C advice

Mike McCarty Mike.McCarty at sbcglobal.net
Thu May 24 10:01:16 UTC 2007


Matthew Saltzman wrote:
> 
> 
> It will definitely print *something*.  The question is, can you 
> guarantee what it will print.

In C89, no in C99, yes.

> It's not addressed directly in the FAQ, but I believe it's possible to 
> prove that (unsigned) -2 must be the two's complement representation of 
> -2 in however many bits make up an int.  I know there was some 
> controversy about that when the standard was being developed.  In any 
> case, I don't know of any modern machine that doesn't represent negative 
> integers in two's complement.

Reach into your pocket, and pull out your calculator.

[snip]

> 
> sizeof(char) == 1 is guaranteed by the standard.  There's no reference 
> to "bytes", but it is commonly accepted that the char type is a byte.  

Erm, from the Standard:

3.4
        [#1] byte
        addressable  unit  of  data storage large enough to hold any
        member  of  the  basic  character  set  of   the   execution
        environment

> It's possible to have chars that are not eight bits, but I can't think 
> of a modern machine that does that.  There were some old machines 
> (Honeywells?) that had six-bit bytes and 36-bit words.
> 
> All this is based on my recollection of discussions in comp.lang.c and 
> comp.std.c when the standard was under development.
> 

Mike
-- 
p="p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
Oppose globalization and One World Governments like the UN.
This message made from 100% recycled bits.
You have found the bank of Larn.
I can explain it for you, but I can't understand it for you.
I speak only for myself, and I am unanimous in that!




More information about the fedora-list mailing list