В стандарте C ++ не указывается размер интегральных типов в байтах, но он указывает минимальные диапазоны, которые они должны удержать. Вы можете вывести минимальный размер в битах из требуемого диапазона. Вы можете вывести минимальный размер в байтах из этого и значение макроса CHAR_BIT
, которое определяет количество бит в байте (во всех, кроме самых неясных платформах, это 8, и оно не может будет меньше 8).
Еще одно ограничение для char
заключается в том, что его размер всегда равен 1 байту или CHAR_BIT
битам (отсюда и название).
Минимальные диапазоны , требуемый стандартом (стр. 22):
и диапазоны типов данных на MSDN :
signed char
: От -127 до 127 (обратите внимание, не от -128 до 127, это предполагает платформы с 1-м дополнением и знаками и знаками) unsigned char
: от 0 до 255 char
: тот же диапазон, что и signed char
или unsigned char
, , определенные реализацией signed short
: от -32767 до 32767 unsigned short
: От 0 до 65535 signed int
: от -32767 до 32767 unsigned int
: от 0 до 65535 signed long
: от -2147483647 до 2147483647 unsigned long
: от 0 до 4294967295 signed long long
: -9223372036854775807 до 9223372036854775807 unsigned long long
: от 0 до 18446744073709551615 AC Реализация ++ (или C) может определять размер типа в байтах sizeof(type)
до любого значения, пока
sizeof(type) * CHAR_BIT
оценивается как количество бит, достаточно высокое, чтобы содержат требуемые диапазоны, а sizeof(int) <= sizeof(long)
). Фактические диапазоны, специфичные для реализации, можно найти в заголовке
в C или
в C ++ (или даже лучше, templated std::numeric_limits
в
.
Например, вы найдете максимальный диапазон для int
:
C:
#include
const int min_int = INT_MIN;
const int max_int = INT_MAX;
C ++:
#include
const int min_int = std::numeric_limits::min();
const int max_int = std::numeric_limits::max();
#define IBOutlet
Каждый раз, когда IBOutlet используется в тексте программы, он не будет заменен ничем вообще.
Определенный пустым указателем макрос является макросом, который не будет заменен ничем (будет удален) препроцессором. Это - роль, должен дать подсказку о чем-то в коде, таком как:
#define IN #define OUT #define INOUT int myFunction(IN char *name, INOUT char *address, OUT char *phone);
Это объявление предлагает это name
входная переменная для функции, address
оба ввод и вывод, phone
выходная переменная.
К вашему сведению, в данном случае, причина IBOutlet
даже существует, просто так, чтобы Интерфейсный Разработчик мог проанализировать исходный файл и подобрать биты понимания от него. Это - подсказка (хорошо, немного более сильный, чем подсказка) что переменная, которой предшествуют IBOutlet
должен обнаружиться как Торговая точка в Интерфейсном Разработчике при разработке UIs.
Также - если Вы не уверены, как что-либо определяется - команда дважды щелкает по нему, и XCode откроет определение в файле первоисточника.
О, и в то время как я в нем. Двойной щелчок опции будет (попытаться к), открывают документацию для символа, по которому дважды щелкают.