На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> char и unsigned char
    Не могу найти простую вещь :(
    чем отличаются char и unsigned char
    и как можно сделать преобразование?
      char - значение от -128 до 128, а unsigned char - от 0 до 256. Преобразуется по-моему обычным преобразованием типов.
      ExpandedWrap disabled
        <br>char c;<br>unsigned char uc;<br>.<br>.<br>.<br>uc = (unsigned char) c;
        спасибо тебе, добрый друг.
          краткое дополнение...
          "unsigned" в переводе с английского "беззнаковое"... Это так, на всякий случай...
            Цитата Pourtous, 03.08.03, 01:24:33
            char - значение от -128 до 128, а unsigned char - от 0 до 256. Преобразуется по-моему обычным преобразованием типов.
            ExpandedWrap disabled
              <br>char c;<br>unsigned char uc;<br>.<br>.<br>.<br>uc = (unsigned char) c;


            Надо еще добавить, что коррекно работает при c >= 0.
              Цитата e-yes, 03.08.03, 04:07:41
              Надо еще добавить, что коррекно работает при c >= 0.

              ты не прав... смотри:
              ExpandedWrap disabled
                char c = -125;<br>unsigned char u = (unsigned)c;


              что у нас ща в u? Правильно, 131 ;)
              т.е. если c < 0, то
              ExpandedWrap disabled
                u = 256 + c;

              ;D
                Проектировать надо нормально, тогда и компилироваться все будет без ворнингов и явного преобразования типов.
                Сантех, ты хоть и модератор, но пофлеймить любишь... мама не горюй ;D

                  2Pourtous:
                  1) Один байт может хранить значения от -128 до 127 (а не до 128).
                  2) Является ли char знаковым или беззнаковым, зависит от реализации.
                  3) Никакого явного преобразования не надо.
                  Собственно происто char отличается от unsigned char и signed char тем, что два последних являеются гарантированно беззнаковым и знаковым типом соответственно. А насчет первого этого неизвестно.
                  Сообщение отредактировано: Relan -
                    Цитата Relan, 03.08.03, 21:59:16
                    3) Никакого явного преобразования не надо.

                    Без явного преобразования будет ворнинг при компиляции.
                      typedef спасет отцов русской демократии, ну и его экстремумы через define можно наопределять...
                        Цитата e-yes, 04.08.03, 07:00:25

                        Без явного преобразования будет ворнинг при компиляции.

                        Ни gcc, ни мелкомягкий ворнинга не выдали.
                          должен быть ворнинг, мол перевод ансигнет ту сигнет...

                          ЗЫ
                          Тема, имхо, уже исчерпано, а флэйм тока развиваеЦа... имхо, тему мона закрыть!
                            Цитата SUnteXx, 04.08.03, 18:39:04
                            ЗЫ
                            Тема, имхо, уже исчерпано, а флэйм тока развиваеЦа... имхо, тему мона закрыть!
                            Не уверен... Кто-то утверждал, не помню кто, что стандарт не определяет атомарный тип ни как signed ни как unsigned, иначе получается явный избыток в терминологии (тип, signed тип и unsigned тип)...
                              Цитата SVK , 04.08.03, 18:51:57

                              Не уверен... Кто-то утверждал, не помню кто, что стандарт не определяет атомарный тип ни как signed ни как unsigned, иначе получается явный избыток в терминологии (тип, signed тип и unsigned тип)...

                              Стандарт утверждает буквально следующее (п. 3.9.1):
                              Существует три разных типа - char, signed char и unsigned char. Они имеют один и тот-же размер, подчиняются одним и тем-же правилам выравнивания и представляют по сути один и тот же объект. Для беззнакового типа все биты используются для представления числа, для знакового - один бит выделяется для знака. Тип char может быть либо знаковым, либо беззнаковым и это implementation-defined для конкретного компилятора. При этом он не является синонимом ни одного, ни другого.
                              Сообщение отредактировано: Flex_Ferrum -
                                char - используется для строковых переменных (нуль-терминированных), размер буфера определяется, например, strlen-ом.
                                unsigned char - для бинарных данных, необходимо всегда знать размер данных в буфере.
                                привести тип char  к типу uchar можно безопасно.  Обратное приведение "чревато боком" :).
                                для приведения бинарных данных к читабельному виду используют, обычно, хексодецимальное преобразование :), когда каждый uchar байт представлен двумя char байтами. (например, чтобы напечатать цифровую подпись...)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0904 ]   [ 15 queries used ]   [ Generated: 27.06.26, 13:55 GMT ]