Производительность HTML5 Canvas - подсчет циклов / кадров в секунду

size_t является неподписанным типом. Таким образом, он не может представлять никаких отрицательных значений (& lt; 0). Вы используете его, когда считаете что-то, и уверены, что он не может быть отрицательным. Например, strlen() возвращает size_t, поскольку длина строки должна быть не менее 0.

В вашем примере, если ваш индекс цикла будет всегда больше 0, может иметь смысл использовать size_t или любой другой неподписанный тип данных.

Когда вы используете объект size_t, вы должны убедиться, что во всех контекстах это используется, включая арифметику, вы хотите неотрицательные значения. Например, предположим, что у вас есть:

size_t s1 = strlen(str1);
size_t s2 = strlen(str2);

, и вы хотите найти разницу в длинах str2 и str1. Вы не можете делать:

int diff = s2 - s1; /* bad */

Это связано с тем, что значение, назначенное diff, всегда будет положительным числом, даже когда s2 < s1, потому что вычисление выполняется с неподписанными типами. В этом случае, в зависимости от вашего варианта использования, вам может быть лучше использовать int (или long long) для s1 и s2.

В C / POSIX, который мог / должен использовать size_t, но не из-за исторических причин. Например, второй параметр fgets в идеале должен быть size_t, но есть int.

14
задан Community 23 May 2017 в 12:19
поделиться