без знака int против size_t

if( isset($_POST['fromPerson']) ) прав.

Вы можете использовать функцию и вернуться, а затем направлять эхо.

468
задан Rob 25 September 2008 в 07:00
поделиться

5 ответов

Эти size_t тип является типом беззнаковых целых чисел, который является результатом sizeof оператор (и offsetof оператор), таким образом, это, как гарантируют, будет достаточно большим для содержания размера самого большого объекта система может обработать (например, статический массив 8 ГБ).

Эти size_t тип может быть больше, чем, равным или меньшим, чем unsigned int, и Ваш компилятор мог бы сделать предположения об этом для оптимизации.

можно найти более точную информацию в стандарте C99, разделить 7.17, проект которого доступен в Интернете в , формат pdf, или в стандарте C11, разделяет 7.19, также доступный как проект .

PDF
367
ответ дан Craig M. Brandenburg 25 September 2008 в 07:00
поделиться

Классик C (ранний диалект C, описанного Brian Kernighan и Dennis Ritchie на Языке программирования C, Prentice-Hall, 1978), не обеспечил size_t. Комитет по стандартам C представил size_t для устранения проблемы мобильности

Объясненный подробно по embedded.com (с очень хорошим примером)

92
ответ дан StaceyGirl 25 September 2008 в 07:00
поделиться

Тип size_t является типом, возвращенным sizeof оператором. Это - целое число без знака, способное к выражению размера в байтах любого диапазона памяти, поддерживаемого на хост-машине. Это (обычно) связывается с ptrdiff_t в том ptrdiff_t, значение целого числа со знаком, таким образом, что sizeof (ptrdiff_t) и sizeof (size_t) равны.

При записи C кода Вы должны всегда использование size_t, имея дело с диапазонами памяти.

международный тип, с другой стороны, в основном определяется как размер целочисленного значения (со знаком), которое хост-машина может использовать, чтобы наиболее эффективно выполнить целочисленную арифметику. Например, на многих более старых компьютерах типа ПК значение sizeof (size_t) было бы 4 (байты), но sizeof (интервал) будет 2 (байт). Арифметика на 16 битов была быстрее, чем арифметика на 32 бита, хотя ЦП мог обработать (логическое) пространство памяти до 4 гибибайт.

Использование международный тип только, когда Вы заботитесь об эффективности, поскольку ее фактическая точность зависит сильно от обоих параметров компилятора и архитектуры машины. В особенности стандарт C определяет следующие инварианты: sizeof (символ) < = sizeof (короткий) < = sizeof (интервал) < = sizeof (долго) помещающий никакие другие ограничения на фактическое представление точности, доступной программисту для каждых из этих типов примитивов.

Примечание: Это не то же как в Java (который на самом деле определяет разрядную точность для каждого из типов 'символ', 'байт', 'короткий', 'международный' и 'длинный').

48
ответ дан Kevin S. 25 September 2008 в 07:00
поделиться

size_t типа должен быть достаточно большим для хранения размера любого возможного объекта. Неподписанный интервал не должен удовлетворять то условие.

, Например, в системах на 64 бита международный и неподписанный интервал может быть 32 бита шириной, но size_t должен быть достаточно большим для хранения чисел, больше, чем 4G

23
ответ дан Maciej Hehl 25 September 2008 в 07:00
поделиться

size_t является размером указателя.

Так в 32 битах или общий ILP32 (целое число, долго, указатель) модель size_t составляет 32 бита. и в 64 битах или общий LP64 (долго, указатель) модель size_t составляет 64 бита (целые числа - все еще 32 бита).

существуют другие модели, но они - те что g ++ использование (по крайней мере, по умолчанию)

-3
ответ дан 25 September 2008 в 07:00
поделиться