На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 101 102 [103] 104 105 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата --Ins-- @
    Ты же объявил результат как byte - он и будет

    результат будет NativeInt, если не указано иное
    ошибка из-за переполнения возникнет при присвоении или при переполнении NativeInt
    ExpandedWrap disabled
      var
        a,b,c,d:byte;
      begin
        b:=200;
        c:=200;
        d:=200;
        a:=b+c-d; // 200
      end;
      Цитата korvin @
      не только

      а где еще
      Цитата --Ins-- @
      оператор / в принципе возвращает extended ;)

      ??
        Цитата --Ins-- @
        То будет int, причем если a = 200, b = 200, то результат будет 400, как и ожидаемо. Урезание до разрядности результата происходит в конце. В этом случае наименьшее удивление и достигается
        Очень странно, значит так

        double := int / int работает, т.к. область допустимых значений операции такая же, как область допустимых значений переменной-результата
        int := int / int не работает, т.к. область допустимых значений операции ниже, чем область допустимых значений переменной-результата

        int := byte + byte работает, т.к. область допустимых значений операции такая же, как область допустимых значений переменной-результата
        byte := byte + byte всё равно работает, даже не смотря нато, что область допустимых значений операции ниже, чем область допустимых значений переменной-результата
          KILLER, под extended я подразумеваю просто вещественный тип
            Цитата --Ins-- @
            Вот это я могу понять! Так же как и могу понять, что оператор / в принципе возвращает extended

            А я не могу. Аргументы были.
            Кстати, можно ли в дельфи так же удобно обработать переполнение?
            ExpandedWrap disabled
                  byte b = 200, c = 100;
                  try
                  {
                    byte a = checked((byte)(b + c));
                    Console.WriteLine(a);
                  }
                  catch(OverflowException e)
                  {
                    Console.WriteLine(e.Message);
                  }

            При этом checked может выставляться на одно выражение (как в примере), на блок кода (checked { }), на весь собираемый проект (в настройках компилятора). Для последнего случая есть антагонист - unchecked.
            Сообщение отредактировано: MyNameIsIgor -
              Цитата --Ins-- @
              Разве? Отнюдь. Хотя да, я забыл добавить "в арифметике"

              в арифметике, на сколько я знаю, по крайней мере в школьной, термин extended отсуствует :huh:

              Добавлено
              Цитата --Ins-- @
              KILLER, под extended я подразумеваю просто вещественный тип

              Ну так тебе ведь уже про комплексные намекали? Вроде намекали, ну так значит за делфи и говори, а не за всю арифметику...
                Цитата Повстанець @
                byte := byte + byte


                То же относится и к int + int и к int * int и т.д. Переполнение - это не всегда ошибка. На переполнении может основываться алгоритм. Какой? Например - шифрования. И определить, ошибка эта или нет, может только сам программист опираясь на свою задачу. Карты в руки - определяй. скажешь что ошибка - будет ошибкой
                  Цитата Qraizer @
                  Гы. Ты, небось, за byte посчитал char (который по-дефолту знаковый)? Тогда у тебя 200 получилось -56. В Паскале/Дельфи byte - беззнаковый тип. Сделай unsigned char получишь те же 600.
                  И вправду. Тогда я протупил.
                    Цитата --Ins-- @
                    изменил бы значок / на div, который дал бы ему желанное целочисленное деление
                    Столь желанный вещественный результат из целочисленных операндов запиливается в виде функции. Если это кому-то надо.
                      Я вообще не понимаю, нашли чо обсуждать, какую то синтаксическую перделку...
                        Цитата Shaggy @
                        ошибка из-за переполнения возникнет при присвоении или при переполнении NativeInt


                        Я в курсе, может я вопрос не так понял или ты мой ответ? Я писал, что обрезание до нужной разрядности происходит при присвоении результата
                          Цитата KILLER @
                          Я вообще не понимаю, нашли чо обсуждать, какую то синтаксическую перделку...

                          Ну, был вброс. Мы достойно на него ответили 8-)
                          Все эти холивары - это вообще языком почесать :rolleyes:
                            Цитата --Ins-- @
                            То же относится и к int + int и к int * int и т.д. Переполнение - это не всегда ошибка. На переполнении может основываться алгоритм. Какой? Например - шифрования. И определить, ошибка эта или нет, может только сам программист опираясь на свою задачу. Карты в руки - определяй. скажешь что ошибка - будет ошибкой
                            Но про целочисленное деление ты уже пишешь пятую страницу. Тем не менее это тоже не всегда ошибка. И на нём тоже основываются алгоритмы. А чаще даже не алгоритмы, а просто вполне себе обыденные мелочи.
                              Цитата MyNameIsIgor @
                              Кстати, можно ли в дельфи так же удобно обработать переполнение?

                              {$OVERFLOWCHECKS ON/OFF}
                              ?
                                Цитата KILLER @
                                а где еще?

                                CL, Scheme, Haskell, больше навскидку не вспомню
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 101 102 [103] 104 105 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.2349 ]   [ 15 queries used ]   [ Generated: 30.07.26, 10:07 GMT ]