On Tue, Jan 27, 2015 at 04:51:33PM -0500, Cathey, Jim wrote: > At the bottom, some of C's arithmetical rules > are 'stupid'. Especially as regards type > promotion. At least they're well-defined.
No, unsigned types are just modular arithmetic. There's nothing 'stupid' or unexpected about how they behave unless you're not aware of that, at least not any more stupid than = and == (and even === in some langs :) having different meanings or left-shifting "cout" in C++... > Absolutely true in a mathematical sense is that > the difference between two unsigned numbers is > SIGNED! It depends on what number system you're working in. Objects of a fixed size cannot represent the integers so you have to either pick a number system that can be represented (C's unsigned types) or work with an approximation of the integers (C's signed types). > But that's not what C does. You can get > around this, easy enough, but you do have to > understand exactly what is going on. It helps > if you are working on a 2's-complement machine. Twos complement is irrelevant to the operation of unsigned arithmetic. Rich _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
