Си диез / Говнокод #23813 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
while(true) 
{
    i++;
    if (i > Int32.MaxValue - 10)
    {
        MessageBox.Show("Зациклилось!");
        break;
    }
}

Запостил: mazhuravlev mazhuravlev, (Updated )

Комментарии (12) RSS

      • всмысле от опций копелятора cl.exe, которые храняца на уровне проекта (и конфигурации еще, если я верно помню визуальнуюстудию)
        Ответить
      • var foo = Int32.MaxValue;
        foo++;
        Console.Write(foo);

        -2147483648

        Так что прекрасный случился перехлест, все эти ваши хваленые высокуровневые копеляторы пропустили такую глупую ошибку
        ахахаха
        Ответить
        • Можно делать checked{foo++;} или включить в настройках проекта Build -> Advanced -> Check for arithmetic overflow, тогда будет OverflowException в таких случаях.
          Ответить
          • Спасибо, я догадывался что как-то так и есть

            Совсем я забыл c#.net, а ведь 11 лет назад я сертфицировался по 70-536
            Ответить
        • > все эти ваши хваленые высокуровневые копеляторы пропустили такую глупую ошибку

          Толи дело PHP
          # https://ideone.com/nVwBdB
          $x = PHP_INT_MAX;
          echo "9000 => ", $x, PHP_EOL;
          
          $x++;
          echo "over 9000 => ", $x, PHP_EOL;
          
          ## 9000      => 9223372036854775807
          ## over 9000 => 9.2233720368548E+18
          Ответить
          • А если от получившкгося фловта отнять единичку то будет обратно max int?
            Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8