Всем привет.
Codeforces при отправке предупреждает, что лучше использовать спецификатор %I64d, чем %lld при чтении и записи 64-битных целых чисел на C++. Но при этом, если заслать код с %lld и выбрать компилятор GNU G++11 5.1.0, код сработает ровно так же, как и с %I64d. Тогда в чем же загвоздка, почему на Codeforces до сих пор возникает такое предупреждение?
Спецификатор %lld соответствует типу long long, а %l64d — типу int64_t. Тип long long не обязан содержать 64 бита. Согласно стандарту, этот тип должен быть больше, чем unsigned long и может иметь разный размер, в зависимости от платформы. int64_t имеет размет 64 бита всегда.
Когда-то давно точно были проблемы с этим. Вроде как уже пару лет все работает нормально.
Спасибо за ответ :)