Why do unsigned integers wrap without extensively using the modulo operator in c++?? Suppose , Unsigned int a , b; a and b both are 2^32-1. Then what will be the value of a+b?
so if they don't overflow how can we make them overflow??
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | maomao90 | 163 |
2 | Um_nik | 163 |
4 | atcoder_official | 161 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | nor | 153 |
9 | Dominater069 | 153 |
Why do unsigned integers wrap without extensively using the modulo operator in c++?? Suppose , Unsigned int a , b; a and b both are 2^32-1. Then what will be the value of a+b?
so if they don't overflow how can we make them overflow??
Name |
---|
why not run it yourself to find out? this seems to be easily tested out right?
Yeah..i ran it i did'nt understand.. .please if you know help..
what do you actually mean by overflow? For what happen with a+b, the value stored in a and b cannot be greater than 2^32-1, so it will just store the modulo of 2^32. read this
for your updated question, it will be 4294967294 which is 2^32-2.as 2^32-1+2^32-1 = 2*(2^32) — 2 = -2 (mod 2^32)
Note that some languages (C and C++ are the most notable examples) include the notion of "undefined behavior", meaning that an experiment can be ill-defined and one cannot draw any conclusions from it.
Not for overflowing unsigned integers, though. If he knew about undefined behavior (I doubt it) but didn't know whether unsigned integer overflow was considered such, then google is a friend of his.