Блог пользователя avik26091998

Автор avik26091998, история, 7 лет назад, По-английски

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

  • Проголосовать: нравится
  • -11
  • Проголосовать: не нравится

»
7 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

why not run it yourself to find out? this seems to be easily tested out right?

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Yeah..i ran it i did'nt understand.. .please if you know help..

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится

      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

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      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)

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    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.

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Note that some languages (C and C++ are the most notable examples) include the notion of "undefined behavior"

      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.