[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: Is this OK in C++ and C?



> From: Mark Allums [mailto:mark@allums.com]
>> 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,


Joe Pfeiffer :

> 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)
 

Me:

> Yes, defined conversion, but not a defined *exact* result; that is, the
> result is system dependent.
> 
> So, yeah.


I'm sorry, I meant, "so yes, you are correct."  My first reply was vague,
and might have sounded a bit unpleasant.  This was not intended.

   


Reply to: