Вопросы с тегом «size-t»

626
Что такое size_t в C?

Я запутался size_tв C. Я знаю, что он возвращается sizeofоператором. Но что именно это? Это тип данных? Допустим, у меня есть forцикл: for(i = 0; i < some_size; i++) Я должен использовать int i;или size_t...

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

Я заметил, что современный код на C и C ++, кажется, использует size_tвместо int/ unsigned intпочти везде - от параметров для строковых функций C до STL. Мне любопытно узнать причину этого и преимущества, которые оно...

246
size_t против uintptr_t

Стандарт C гарантирует, что size_tэто тип, который может содержать любой индекс массива. Это означает, что, по логике, size_tдолжен быть в состоянии содержать любой тип указателя. Я читал на некоторых сайтах, которые я нашел на Google, что это законно и / или должно всегда работать: void *v =...

201
Когда использовать std :: size_t?

Мне просто интересно, я должен использовать std::size_tдля петель и прочее вместо int? Например: #include <cstdint> int main() { for (std::size_t i = 0; i < 10; ++i) { // std::size_t OK here? Or should I use, say, unsigned int instead? } } В целом, какова лучшая практика относительно того,...

139
Разница между size_t и std :: size_t

Каковы различия между size_t и std::size_tс точки зрения того, где они объявлены, когда они должны использоваться и каких-либо других отличительных

96
Чистый код для printf size_t в C ++ (или: Ближайший эквивалент% z из C99 в C ++)

У меня есть код C ++, который печатает size_t: size_t a; printf("%lu", a); Я бы хотел, чтобы это скомпилировалось без предупреждений как на 32-, так и на 64-битных архитектурах. Если бы это был C99, я бы мог использовать printf("%z", a);. Но AFAICT %zне существует ни на одном стандартном диалекте...

86
Независимые от платформы спецификаторы формата size_t в c?

Я хочу распечатать переменную типа size_tC, но похоже, что size_tона привязана к разным типам переменных на разных архитектурах. Например, на одной машине (64-битной) следующий код не выдает никаких предупреждений: size_t size = 1; printf("the size is %ld", size); но на моей другой машине...