На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (15) « Первая ... 12 13 [14] 15  все  ( Перейти к последнему сообщению )  
> Легальный около Цэ++ шный холивар
    Цитата Qraizer @
    Например, порт проекта на старый компиль.

    Добавлено 6 минут назад
    Или на недокомпиль для микроконтроллера. Или даже наноконтрольчика.
    Нет, это граф-двиг для обычного писюка. Порт ни на какие древние компили не задумывался.
    Цитата Бобёр @
    А вообще так многие делают. Например, glib.
    "ядро" - на plain-C без прикрас, а зато потом каждый сможет замутить биндинг под любой язык - и наслаждаться.
    Если бы это была сяшечка или древний прожект я бы понял, но тут C++ и 2015-год.
      Новый проект?

      Ну, видимо, с авторами что-то не так :(
        Может им важна разрядность типов. Если будут портировать проект на платформу с не 32-разрядным int, меньше изменений делать.
          Цитата D_KEY @
          Ну, видимо, с авторами что-то не так :(
          Я тоже так думаю.
          Цитата Kray74 @
          Может им важна разрядность типов. Если будут портировать проект на платформу с не 32-разрядным int, меньше изменений делать.
          Я же написал - обычный писюк. А для точной разрядности давно уже введены соответствующие типы - http://www.cplusplus.com/reference/cstdint/
            Иногда хочется поиграться разрядностью помимо стандартных способов. Ну, в общем, эдакое поле для экспериментов в общем.
              Цитата Бобёр @
              Иногда хочется поиграться разрядностью помимо стандартных способов. Ну, в общем, эдакое поле для экспериментов в общем.
              А можно пример таких игр?
                Цитата
                Дана строка символов. Напишите цикл, за один проход удаляющий из неё все пробелы.
                Решение под спойлером, если вдруг кто захочет сам попробовать написать.
                Скрытый текст
                ExpandedWrap disabled
                  for (char *p = str; *p != '\0'; p += *p!=' ')
                    *p = *(str += *str==' ')++;
                Но меня интересует другой аспект: есть или нет в этом решении неопределённое поведение?
                  Цитата Qraizer @
                  есть или нет в этом решении неопределённое поведение?
                  Такие мысли:
                  1.str может портиться (меняться), а вначале подумалось, что ввод 'p' избавит от этого. :'(
                  2.К char* добавляется bool, что как бы не шибко красиво. :unsure:
                    Это всё не попадает под неопределённое поведение, Славян. А вот двойное изменение str во второй строке теоретически попадает. Однако у меня такое впечатление, что конкретно тут неопределённого поведения всё-таки нет.
                      В любом случае это говнокод. Да и ситуации, когда приходится разбирать, UB тут или нет, уже как правило не лучше UB.
                        Цитата Qraizer @
                        Это всё не попадает под неопределённое поведение
                        Согласен. Просто мысли такие были. :blush:
                        Цитата Qraizer @
                        А вот двойное изменение str во второй строке теоретически попадает. Однако у меня такое впечатление, что конкретно тут неопределённого поведения всё-таки нет.
                        Я тоже подумал, что кто-то реализует char в каком-нибудь контроллере как столько-то байтовый, а bool как столько-то. И понеслось... Но, в x86 ГОСТе, всё пока нормуль. :yes:
                          D_KEY, видишь ли... ты будешь смеяться, наверно... да и не только ты. Прикол в том, что это самое UB в выражениях у меня уже в рефлексах. Когда это написал, вообще не думал ни о чём. И вдруг спустя пару минут увидел двойное изменение str. Удивился, почему рефлекс не сработал. Смотрел внимательно, вроде всё на месте... но рефлекс теперь уже говорит, что тут нет UB.
                          Как-то так, в общем... :wub:
                          Сообщение отредактировано: Qraizer -
                            Цитата Славян @
                            Я тоже подумал, что кто-то реализует char в каком-нибудь контроллере как столько-то байтовый, а bool как столько-то. И понеслось...

                            Не понеслось. bool преобразуется к целочисленному типу (false=0, true=1) и складывается с указателем. Размеры char и bool не играют никакой роли.
                              Цитата Kray74 @
                              true=1

                              Можно пруф?
                                Тип bool вообще-то существует в двух ипостасях. Один - это обычно результат сравнения. Фактически это даже не данные, а точка перехода в программе. Такой bool при преобразовании однозначно переводится в числа 0 и 1. И такие же значения запоминаются в переменных. В Си результатами сравнений и логических операций были целые 0 и 1. В некоторых языках не так, и логические операции могут применяться к любым данным, давая результат соответствующего типа
                                Второй bool - это результат преобразования значения произвольного типа в логическое значение. Формально это результат выражения (v!=0), и компилятор должен привести результат к той же паре чисел. По крайней мере для сохранения читаемости программ следует заменять все ненулевые значения на 1. Так ли это в стандарте?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0849 ]   [ 16 queries used ]   [ Generated: 29.03.24, 02:35 GMT ]