"Don" <[email protected]> wrote in message news:[email protected]... > bearophile wrote: >> Don: >>> The question was about incrementing uint, not int. Preventing wraparound >>> on uints would break everything! >> >> If optional runtime overflow controls are added to integral values, then >> they are performed on ubyte/ushort/uint/ulong/ucent too, because leaving >> a hole in that safety net is very bad and useless. > > But uints HAVE no overflow! In the case of an int, you are approximating a > mathematical infinite-precision integer. An overflow means you went > outside the available precision. > A uint is quite different. > uint arithmetic is perfectly standard modulo 2^32 arithmetic. > Don't be confused by the fact that many people use them as approximations > to infinite-precision positive integers. That's _not_ what they are. >
A uint is an int with the domain of possible values shifted by +uint.max/2 (while retaining binary compatibility with the overlapping values, of course). Modulo 2^32 arithmetic is just one possible use for them. For other uses, detecting overflow can be useful.
