Re: ANSI C clarifications, with citations (was Re: [patch-2.4

Davide Libenzi (davidel@maticad.it)
Tue, 27 Jun 2000 09:10:05 +0200


> 1. The "char" type is 8 bits. It might be unsigned though. :-/
> 2. sizeof(short) == 2
> 3. sizeof(int) == 4 (for real Linux, not the 8088 hack)
> 4. sizeof(long) == sizeof(void *)
> 5. (sizeof(long) == 4) | (sizeof(long) == 8)
> 6. sizeof(long long) == 8 (good for 10 years at least)
> 7. You can freely cast between any two pointer types
> 8. You can freely cast between long and any pointer type
> 9. (long)(int*)(long)foo == (long)(char*)(int*)(long)foo
> 10. signed integers are represented in two's complement form
> 11. integers wrap around instead of causing faults
> 12. assuming "good" struct layout, padding only occurs at the end
> 13. ... that padding won't happen if you supply a multiple of 16 bytes

Standard makes no assumption about higher limits of data types, it fixes
only that :

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long
long)

that is a char type can be casted to short with no loss,
a short can be casted to int with no loss,
etc ...

Davide

--
Feel free, feel Debian !

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/