>
>
>
Как правильно распечатать значение типа…

Андрей Карпов
Статей: 643

Как правильно распечатать значение типа __int64, size_t и ptrdiff_t

Часто при разработке программы можно столкнуться с тем, что переменные типа __int64, size_t или ptrdiff_t некорректно выводятся на печать. Прежде всего, стоит упомянуть различие между этими типами данных. Так тип __int64 на 32-битной и 64-битной платформах всегда имеет размер 64 бита. Типы size_t и ptrdiff_t на 32-битной - 32 бита, а на 64-битной - 64 бита. Именно отсюда и возникает путаница и проблемы с распечаткой значений переменных этих типов.

Устранить проблему можно несколькими путями:

1. Использовать безопасные методы

Например, можно заменить printf на cout, а sprintf на boost::format или std::stringstream.

2. Использовать корректную форматную строку

а) Для типа __int64 независимо от типа компилятора (C++Builder, MSVC или GCC):

printf("%lld", i);

б) Для типов size_t и ptrdiff_t:

Библиографический список