Здравствуйте, Marty, Вы писали:
M>Здравствуйте, Евгений Музыченко, Вы писали:
M>>>Писать зело больше
ЕМ>>О да, uint вместо int, ulong вместо long — это ж пальцы отобьешь...
M>Таких типов нет, если что
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Откуда такое пристрастие, кроме как от лени? Вроде как сколько-нибудь массовых процессоров, где беззнаковые целые поддерживались бы ограниченно, не существует. Есть в этом хоть какое-то рациональное зерно?
На всякий случай. Вот раньше никто не думал, что фьючерс на нефть может быть отрицательным, а он может))
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Неее, тут всё гораздо интереснее. Из указателя ты много информации не вытянешь, а вот из индекса в массиве очень даже. SVZ>К примеру, у нас в структурах данных некоторые связи не хранятся явно, а вычисляются на основе индекса.
SVZ>
SVZ> // ======================================================================
SVZ> typedef int BRICK; //!< Single mesh cell
SVZ> typedef std::pair<BRICK, BRICK> BRICK2; //!< Couple of bricks
SVZ> typedef int FACET; //!< A facet of the cell (each cell has 6 facets)
SVZ> typedef int JOINT; //!< Joint between adjacent cells
SVZ> typedef unsigned char FILLING; //!< ID of the Cell filling
SVZ> typedef int BRDATAEX; //!< Reference to the brick additional data
SVZ> typedef int JOINTDATAEX; //!< Reference to the joint additional data
SVZ> typedef int FACETREF; //!< Reference to the list of facets
SVZ> typedef float PMLStretch;
SVZ> typedef float PMLSigma;
SVZ> typedef unsigned char JUNCTYPE; //!< Тип соединения на Joint (eJunctionFace)
SVZ> typedef int UPORT; //!< Индекс Micro-port'а
SVZ> typedef int UPORTVAL; //!< Значение Micro-port
SVZ> typedef int CORNER; //!< Угол ячейки
SVZ> // ======================================================================
SVZ> enum
SVZ> {
SVZ> Facet_Brick = 6, // Число граней у ячейки - для SplitFace могут быть дополнительные subfacets
SVZ> Corner_Brick = 8, // Число углов у ячейки
SVZ> UPort_Facet = 2, // Число микропортов у одной грани или subfacet
SVZ> UPort_Brick = 6*2, // Число микропортов у ячейки - только для Simple, PML, Conformal - больше для SplitFace Brick
SVZ> IncFacet_Max = 4 // Макс. число инцидентных граней
SVZ> // с одной стороны соединения
SVZ> };
SVZ>
Извините, что влезаю, но рекомендую попробовать заменить эти объявления типов на "strong typedef" . Могут обнаружиться интересные места, где яблоки складываются с апельсинами. И использование `enum class` тоже усилит типизацию.
Здравствуйте, T4r4sB, Вы писали:
TB>Ты не понимаешь, чем отличается каноничный for от изврата?
Я понимаю, что ты свои личные интуитивные ассоциации пытаешься возвести в ранг абсолютной истины. Будучи неспособным хоть как-то обосновать свои утверждения.
TB>Снова троллинг?
Троллинг — это любая точка зрения, не совпадающая с твоей?
Здравствуйте, netch80, Вы писали:
AG>>С точки зрение перформанса, есть случаи, где беззнаковые немного лучше, и нет случаев, где знаковые лучше.
N>Именно в C и C++ у знаковых принципиально лучше с точки зрения производительности, что позиция, что программист всегда позаботился о переполнениях, позволяет массу оптимизаций, типа замены a+1>a на true. Были отзывы о получении 20-50% выигрыша на этом в отдельных характерно интересных случаях.
Ты на беззнаках даже тупо от ЭН до нуля проитерироваться не можешь без дополнительного бубна.
достаточно точно описывает твои собственные навыки. Скорее всего, ты действительно не смог бы решить эту задачу без какого-нибудь изврата. И после того, как тебе показывают, как это делается, у тебя есть ровно два пути: 1) признать свою ошибку; 2) назвать извратом любое предложенное решение. Ну, первый вариант тебе не по зубам, судя по всему. Поэтому остается только второй, сопровождаемый лютым баттхертом
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Чего ты добьешься, перейдя на unsigned ? Увеличения диапазона положительных чисел в 2 раза ? Смысла в этом немного, так как 2 миллиарда или 4 миллиарда — как правило, черт один, вполне хватит. А если не хватит, то надо на 64 бита переходить, а не бороться за один бит.
"640kB хватит всем"
Те люди, кто для знаковых индексов обычно используют int, используют его же не задумываясь для количества элементов в контейнеров, размера и позиции в файловых потоках. Но 2 гигабайта для бинарных данных по нынешним временам не так уж и много. И я уже пару раз сталкивался с таким ограничением.
Например, в Google Protocol Buffers v3.2.0 облагодетельствовали: "The default parsing byte size limit has been raised from 64MB to 2GB"].
PD>А больше я ничего не вижу. Зато я знаю, что если в результате арифметики с положительными числами результат оказался отрицательным там, где такого не должно быть,то ошибку надо искать в алгоритме, а не в неявных преобразованиях.
Кажется это справедливо и для беззнаковых — результат сложения или умножения не может быть меньше операнда.
R>достаточно точно описывает твои собственные навыки. Скорее всего, ты действительно не смог бы решить эту задачу без какого-нибудь изврата. И после того, как тебе показывают, как это делается, у тебя есть ровно два пути: 1) признать свою ошибку; 2) назвать извратом любое предложенное решение. Ну, первый вариант тебе не по зубам, судя по всему. Поэтому остается только второй, сопровождаемый лютым баттхертом
Здравствуйте, PM, Вы писали:
PM>Извините, что влезаю, но рекомендую попробовать заменить эти объявления типов на "strong typedef" . Могут обнаружиться интересные места, где яблоки складываются с апельсинами. И использование `enum class` тоже усилит типизацию.
Думали об этом, но во времена msvs6 с оптимизацией было не очень, а сейчас чего-то руки не доходят.
_____________________
С уважением,
Stanislav V. Zudin
TB>О, желание уличить других в некомпетентности, и диагностирование баттхёрта.
Да это всего лишь мое мнение. Ты же интересовался, что я думаю о тебе, вот, пожалуйста. Я же не претендую быть истиной в последней инстанции, в отличие от некоторых.
TB>Тебе что, меньше 20 лет?
Ну даже если и так, тебе это как облегчает существование?
малыш ты что сказать то хотел ?
если ты не понял, то лучше пройди мимо
а если хочется минусонуть, выбери armv4 в годболте, получи такой же код, и иди минусуй оппоненту на стековерфлов
некоторые архитектуры включая арм и даже современные, могут в некоторых случаях генерить доп код для знаковой арифметики.
Здравствуйте, reversecode, Вы писали:
R>малыш ты что сказать то хотел ?
Что хотел то и сказал, дедуля. Если ты не понял, что сам выложил, то посмотри внимательней. Ответ прост: для unsigned сравнение с -1 бессмысленно и упрощается компилятором.
Здравствуйте, reversecode, Вы писали:
r> _>И кто еще пользуется этим устаревшим ARMv4 ? r> https://godbolt.org/z/vpt9Tw r> раскомментируйте unsigned и увидите на сколько уменьшиться выхлоп
Сравнивать выхлоп без -O?! Или это шутка была?