> Joe Pfeiffer :
int main() { const unsigned int n = -5; cout << "The variable n is: " << n << endl; return 0; } Results: $ g++ -Wall -W prog.cpp -o prog $ ./prog The variable n is: 4294967291 > > This is expected behavior, but not defined by the standard because the > > result is not portable. That is, a rollover value will occur, but it > > could vary depending on the width of an int, and possibly by the > > binary representation. As far as I know all systems that Debian with > > gcc runs on are two's complement, but still... > I believe it is indeed defined behavior. > 6.3.1.3 Signed and unsigned integers > 1 When a value with integer type is converted to another integer type other > than _Bool, if > the value can be represented by the new type, it is unchanged. > 2 Otherwise, if the new type is unsigned, the value is converted by > repeatedly adding or > subtracting one more than the maximum value that can be represented in > the new type > until the value is in the range of the new type.49) > Yes, defined conversion, but not a defined *exact* result; that is, the result is system dependent. So, yeah. > > This kind of type shenanigan is allowed in C/C++ because of silent > > standard conversions. -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/01a301cde8cf$eb01f220$c105d660$@allums.com