[Solved] Unsigned int not working C++


You are expecting the cast from int to unsigned int to simply change the sign of a negative value while maintaining its magnitude. But that isn’t how it works in C or C++. when it comes to overflow, unsigned integers follow modular arithmetic, meaning that assigning or initializing from negatives values such as -1 or -2 wraps around to the largest and second largest unsigned values, and so on. So, for example, these two are equivalent:

unsigned int n = -1;
unsigned int m = -2;

and

unsigned int n = std::numeric_limits<unsigned int>::max();
unsigned int m = std::numeric_limits<unsigned int>::max() - 1;

See this working example.

Also note that there is no substantial difference between programs 1 and 2. It is all down to the sign of the value used to initialize or assign to the unsigned integer.

3

solved Unsigned int not working C++