Вы можете сделать что-то похожее на это:
// Get the parent to attatch the element into
var parent = document.getElementsByTagName("ul")[0];
// Create element with random id
var element = document.createElement("li");
element.id = "li-"+Math.floor(Math.random()*9999);
// Add event listener
element.addEventListener("click", EVENT_FN);
// Add to parent
parent.appendChild(element);
В стандарте C99, 7.18.1.3 Самые быстрые целые числа минимальной ширины.
(7.18.1.3p1) "Каждый из следующих типов обозначает целочисленный тип, который обычно является самым быстрым225), чтобы работать со всеми целыми типами, которые имеют как минимум указанную ширину. "
225)« Назначенный тип не гарантируется как самый быстрый для всех целей, если в реализации нет четких оснований для выбора одного типа над другой, он просто выберет некоторый целочисленный тип, удовлетворяющий требованиям подписи и ширины. "
blockquote>и
(7.18.1.3p2)" Имя typedef int_fastN_t обозначает наивысший знак целого типа с шириной не менее N. Имя typedef uint_fastN_t обозначает самый быстрый целочисленный тип без знака с шириной не менее N. "
blockquote>Типы
int_fastN_t
иuint_fastN_t
являются аналогами целых чисел точной шириныintN_t
иuintN_t
. Реализация гарантирует, что они принимают не менееN
бит, но реализация может принимать больше бит, если она может выполнять оптимизацию с использованием более крупных типов; он просто гарантирует, что они берут как минимумN
бит.Например, на 32-битной машине
uint_fast16_t
можно определить какunsigned int
, а не какunsigned short
, потому что работа с типами размера машинного слова будет более эффективной.Еще одна причина их существования - точные целые числа полной длины являются необязательными в C, но требуются самые быстрые целые типы минимальной ширины и целые типы минимальной ширины (
int_leastN_t
иuint_leastN_t
).
Вероятно, не будет никакой разницы, кроме экзотического оборудования, где int32_t
и int16_t
даже не существуют.
В этом случае вы можете использовать int_least16_t
для получения наименьшего типа, может содержать 16 бит. Может быть важно, если вы хотите сохранить пространство.
С другой стороны, использование int_fast16_t
может привести к вам другой тип, больший, чем int_least16_t
, но, возможно, быстрее для «типичного» использования целого числа. Реализация должна будет учитывать, что быстрее и что типично. Возможно, это очевидно для некоторых аппаратных средств специального назначения?
На большинстве распространенных машин эти 16-битные типы будут типичными для short
, и вам не нужно беспокоиться.
IMO они довольно бессмысленны.
Компилятору все равно, что вы называете типом, только какой размер и какие правила применимы к нему. поэтому, если int, in32_t и int_fast32_t - все 32 бита на вашей платформе, они почти наверняка все будут работать одинаково.
Теория заключается в том, что разработчики языка должны выбирать на основе того, что быстрее всего на их оборудовании, но стандартные авторы никогда не фиксировали четкое определение самого быстрого. Добавьте это к тому, что разработчики платформы не хотят изменять определение таких типов (поскольку это будет разрыв ABI), и определения в конечном итоге произвольно выбираются в начале жизни платформ (или унаследованы от других платформ, библиотека C была портирован с) и никогда не касался снова.
Если вы находитесь на уровне микро-оптимизации, который, по вашему мнению, может иметь существенный разброс, то сравнивайте различные варианты с помощью вашего кода на ваш процессор . В противном случае не беспокойтесь об этом. «Быстрые» типы не добавляют ничего полезного ИМО.
Gnu libc определяет {int, uint} _fast {16,32} _t как 64-бит при компиляции для 64-разрядных ЦП и 32-битных в противном случае. Операции над 64-битными целыми числами быстрее на процессорах Intel и AMD 64-разрядных x86, чем те же операции с 32-разрядными целыми числами.
int
может быть как 16 бит, а его размер обычно зависит от компилятора, но не от платформы. Это, вероятно, артефакт 16 - 32-битного перехода.
– user833771
3 November 2014 в 09:50
uint_fast16_t
может быть определена какunsigned int
& quot; - да, но вы можете использовать простой старыйunsigned int
напрямую, так как он является собственной целочисленной шириной, а стандарт гарантирует ширину не менее 16 бит. Аналогично,long
встречает те же ограничения, что иint_fast32_t
. – Fred Foo 11 February 2012 в 13:15uint_fast16_t
может быть псевдонимом дляunsigned int
в 32-битной машине и дляunsigned long
в 64-разрядной машине. Использованиеunsigned int
вместоuint_fast16_t
в вашей программе не будет одинаковым, если вы собираетесь скомпилировать свою программу на разных машинах. – ouah 11 February 2012 в 13:24