Как я помню из чтения Framework Design Guidelines , на самом деле не существует установленного соглашения для частных переменных-членов, за исключением того, что не следует использовать венгерскую нотацию и не следует использовать заглавную букву первой буквы имени переменной ( использовать верблюжий корпус). В книге есть цитаты, которые поддерживают оба ваших примера, а также вообще не используют префиксы.
Лично я предпочитаю префикс "m_".
Из копия спецификации ANSI C , см. Раздел 3.1.2.5 - Типы :
Объект, объявленный как тип char, достаточно большой, чтобы вместить любой член базовый набор символов исполнения. Если член требуемого источника набор символов, перечисленный в $ 2.2.1, равен хранится в объекте char, его значение гарантированно будет положительным. Если другие количества хранятся в char объект, поведение определяется реализацией: значения рассматривается как подписанный или неотрицательные целые числа.
Концепция «набора символов выполнения» вводится в Раздел 2.2.1 - Наборы символов .
Другими словами, char должен быть как минимум достаточно большим, чтобы содержать кодирование не менее 95 различных символов, составляющих базовый набор символов выполнения.
Теперь добавьте к этому раздел 2.2.4.2 - Числовые ограничения
Соответствующая реализация должна задокументировать все ограничения, указанные в этот раздел, который необходимо указать в заголовках
и
.
Размеры интегральных типов
Приведенные ниже значения должны быть заменены постоянными выражениями подходит для использования в предварительной обработке #if директивы. Их значения, определенные реализацией, должны быть равный или больший по величине (абсолютное значение) к показанным, с тот же знак.
максимальное количество бит для наименьшего объект, который не является битовым полем (байт)
CHAR_BIT 8минимальное значение для объекта типа знаковый char
SCHAR_MIN -127максимальное значение для объекта типа знаковый символ
SCHAR_MAX +127максимальное значение для объекта типа unsigned char
UCHAR_MAX 255....
Итак, у вас есть это - количество бит в char должно быть не менее 8.
Нет, не гарантируется, что он будет 8-битным. sizeof (char) гарантированно равен 1, но это не обязательно означает один 8-битный байт.
нет, тип данных char должен содержать не менее 8 бит (см. Спецификацию ANSI C)
В проекте стандарта C99 говорится, что байт должен быть не менее 8-битной ширины, поскольку
содержит макрос CHAR_BIT
, который дает количество битов на байт, которое гарантированно должно быть не менее 8 (§5.2.4.2.1).
Черновик стандарта C ++ включает C
под именем ]
(§18.2.2).
Из стандарта C, описывающего limits.h (требуется некоторое переформатирование):
Минимум 8 CHAR_BIT гарантирует, что ширина символа не менее 8 бит. Диапазоны SCHAR_MIN и SCHAR_MAX гарантируют, что представление подписанного char использует не менее восьми битов.
Первое, что я хотел бы сказать, это то, что если вам нужно, чтобы тип был точным числом битов, используйте тип определенного размера. В зависимости от вашей платформы он может варьироваться от __ s8
для 8-битного типа со знаком в Linux до __ int8
в VC ++ в Windows.
Теперь, согласно Роберту Лаву в его главе о переносимости в «Разработка ядра Linux» он заявляет, что стандарт C «оставляет размер стандартных типов на усмотрение реализаций, хотя он действительно требует минимального размера».
Затем в сноске внизу страницы он говорит: «За исключением char
, который всегда 8 бит»
Я не уверен, на чем он это основывает, но может быть, это этот раздел из спецификации ANSI C ?
2.2.4. в этом разделе, который должен быть указан в заголовках limits.h и float.h
«Размеры целочисленных типов limits.h»
Приведенные ниже значения должны быть заменены постоянными выражениями подходит для использования в директивах предварительной обработки #if. Их значения, определенные реализацией, должны быть равны или больше по величине (абсолютное значение) показанным, с тем же знаком.
максимальное количество битов для наименьшего объекта, который не является битовым полем (байт)
CHAR_BIT 8
минимальное значение для объекта типа signed char
SCHAR_MIN -127
максимальное значение для объекта типа signed char
SCHAR_MAX +127
максимальное значение для объекта типа unsigned char
UCHAR_MAX 255
минимальное значение для объекта type char
CHAR_MIN см. ниже
максимальное значение для объекта типа char
CHAR_MAX см. ниже
максимальное количество байтов в многобайтовом символе,для любой поддерживаемой локали
MB_LEN_MAX 1
минимальное значение для объекта типа short int
SHRT_MIN -32767
максимальное значение для объекта типа short int
SHRT_MAX +32767
максимальное значение для объекта типа unsigned short int
USHRT_MAX 65535
минимальное значение для объекта типа int
INT_MIN -32767
максимальное значение для объекта типа int
INT_MAX +32767
максимальное значение для объекта типа unsigned int
UINT_MAX 65535
минимальное значение для объекта типа long int
LONG_MIN -2147483647
максимальное значение для объекта типа long int
LONG_MAX +2147483647
максимальное значение для объекта типа unsigned long int
ULONG_MAX 4294967295
Если значение объекта типа char sign-extends при использовании в
максимальное значение для объекта типа int
INT_MAX +32767
максимальное значение для объекта типа unsigned int
UINT_MAX 65535
минимальное значение для объекта типа long int
LONG_MIN -2147483647
максимальное значение для объекта типа long int
LONG_MAX +2147483647
максимальное значение для объекта типа unsigned long int
ULONG_MAX 4294967295
если значение объекта типа char знак-расширяется при использовании в
максимальное значение для объекта типа int
INT_MAX +32767
максимальное значение для объекта типа unsigned int
UINT_MAX 65535
минимальное значение для объекта типа long int
LONG_MIN -2147483647
максимальное значение для объекта типа long int
LONG_MAX +2147483647
максимальное значение для объекта типа unsigned long int
ULONG_MAX 4294967295
если значение объекта типа char знак-расширяется при использовании вобъекта типа char sign-extends при использовании вобъекта типа char sign-extends при использовании в выражение, значение CHAR_MIN должно быть таким же, как у SCHAR_MIN и значение CHAR_MAX должны быть такими же, как у SCHAR_MAX. Если значение объекта типа char не sign-extend при использовании в выражении значение CHAR_MIN должно быть 0, а значение CHAR_MAX должно быть таким же, как и значение UCHAR_MAX ./7/