На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (78) « Первая ... 57 58 [59] 60 61 ...  77 78  ( Перейти к последнему сообщению )  
> Текущий Стандарт С++ и перспективы его развития
    Цитата Славян @
    А скажите, есть вариант символа и для линуха и для винды, кой 2 байта всегда?

    char16_t
      Спасибки!!!

      Добавлено
      Цитата Kray74 @
      char16_t
      Хм... Однако в MS VC 2012 такое не нашлось ни в string.h ни в string. Хотя помощь что-то знает такое. Подскажите, где понадёжнее откопать определение?
        Цитата Kray74 @
        char16_t

        Глянул в стандарт, все-таки char16_t может быть и больше 2 байт, но не меньше. Однако, сомневаюсь, что такое встретится на практике.
          Цитата Kray74 @
          Глянул в стандарт, все-таки char16_t может быть и больше 2 байт, но не меньше.
          Фантастическая жесть: количество бит въявную оговорено в записи слова, а может таковым и не оказаться!!! Копец полный.
            Цитата Славян @
            Хм... Однако в MS VC 2012 такое не нашлось ни в string.h ни в string. Хотя помощь что-то знает такое. Подскажите, где понадёжнее откопать определение?

            В студии до сих пор не реализовано :(
              Славян, ничего жёсткого. Имеются платформы, где не все биты слова участвуют в репрезентации значения типа, и это явно учтено в Стандарте:
              Цитата 3.9.1 Fundamental types
              1. ... Plain char, signed char, and unsigned char are three distinct types. ... For character types, all bits of the object representation participate in the value representation. For unsigned character types, all possible bit patterns of the value representation represent numbers. These requirements do not hold for other types. ...
              Отсюда и least в имени типа, используемого для репрезентации char16_t. В отличие от целочисленных типов, для которых определён диапазон значений от min до мax, для символов допустимый диапазон значений не имеет смысла, а имеет смысл способность репрезентовать символы из символьного набора.
                Qraizer,просто я когда вижу простое имя типа, то допускаю в мысли, что он разное кол-во мест в памяти займёт на разных системах. А когда я вижу явное указание бит/байт, то мозг автоматом это помещает в конкретное целое. Как-то так, в этом и было моё эмоциональное "жесть"... Возможно, я просто не привык к таким их стандартам...
                  Ну это понятно. Cшный стереотип, где char использовался - да и до сих пор используется - в качестве крохотного целого, накладывает свой отпечаток. Не даром же в Плюсах все три типа char, signed char и unsigned char разные, потому как первый - это символы, а вторые два - те самые целые. Разумеется не по факту, а по предназначению, но тут уж программеры сами должны как-то этот стереотип перебороть. То же и с широкими символами. char16_t - это не целочисленный тип, это символ с 16-битным кодированием, его репрезентация не обязана быть 16-битной, но обязана мочь репрезентовать 16-битные символы.
                    Цитата Qraizer @
                    но тут уж программеры сами должны как-то этот стереотип перебороть.
                    А мне кажется, что это как раз и сила "программер"ов, что нет никаких символов - всё числа. Потому все char'ы - это крохотные целые и всё. Мне вот неясно, зачем вы пытаетесь увидеть в числах нечто особенное,а? :blush:
                      Собственно, с int#_t, uint#_t та же история. Они тоже не обязаны занимать ровно указанное число бит. Единственное, что от них требуется - вмещать в себя все соответствующие значения.
                      Понятно, что на платформе, где минимальный адресуемый участок памяти - 32 бита, и (u)int8_t, и (u)int16_t будут занимать минимум 32 бита.
                        Славян, это не сила, а глупость. Символ - не число. Ты ещё скажи, что строка и массив символов ничем не отличаются.
                          Цитата amk @
                          Понятно, что на платформе, где минимальный адресуемый участок памяти - 32 бита.

                          Чиста для интереса: а есть такие из ныне живущих?

                          (но то есть понятно что на некой платформе и байт может быть не 8 бит, но есть ли такие на практике?)
                            Цитата Qraizer @
                            строка и массив символов

                            массив байт?

                            строка и массив символов, думаю, таки ничем не отличается. "символ" - как бы намекает, имхо.
                              Собственно char'ы были настоящими числами в чистом C. Но там это не вызывало проблем - всё равно окончательный контроль типов в основном лежал на программисте, который решал трактовать данные как символы или как числа. Там и wchar_t часто определялся как синоним какого-то из int'ов.
                              В C++ работа с типами почти во всём автоматизирована, и приходится различать signed char от int8_t, а wchar_t ot int поскольку логически это совершенно разные типы.

                              Добавлено
                              Цитата amdei @
                              Чиста для интереса: а есть такие из ныне живущих?
                              Есть. Возьми любой сигнальник. Обычно в них вся адресация словами по 32 бита.
                              Родные фирменные компиляторы обычно существуют только для чистого C с довольно ограниченной библиотекой (да и язык может быть урезан), но сторонние компиляторы (тот же GCC) могут быть собраны для них с поддержкой всего набора языков, да и библиотека может быть побогаче.
                                строка и массив символов могут быть и одним, и совсем разным, в зависимости от выбранного подхода

                                абстракцию можно осуществлять в разных направлениях. в каком надо - зависит от желаемого результата. в одном случае все обобщается до пары чисел с тремя операциями (булевой алгебры), в другом до объединения понятий предметной области и/или конкретных высокоуровневых математических моделей.
                                имея в виду конкретный ЯП более естественно мыслить в терминах абстрактной машины, на которой он исполняется, а не конкретной платформы.

                                да и вообще, опускаться на низкий уровень не часто приходится (кроме специфичных задач), чаще задачи прикладные и точка зрения соответствующая.

                                :off
                                проникая в тайны материи удобно все сущее представлять в виде молекул, атомов, полей.
                                а при проектировании дома удобнее размышлять в терминах строительных конструкций.

                                :off :off
                                вершину абстракции Qraizer приводил недавно в виде шаблона универсального решателя ;)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (78) « Первая ... 57 58 [59] 60 61 ...  77 78


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0775 ]   [ 16 queries used ]   [ Generated: 18.06.25, 23:34 GMT ]