64-битные целые числа и printf/scanf

eesti keeles | in English

Важная информация для пользователей языка C: считывание и запись 64-битных целых чисел слегка различается в Windows и Linux.

Под Linux (в частности, на сервере тестирования) компилятор GCC использует реализации функций printf и scanf из библиотеки GNU glibc. В этой библиотеке символом формата для 64-битного целого числа со знаком (long long) является %Ld или %lld, а для 64-битного целого числа без знака (unsigned long long): %Lu или %llu.

Под Windows (во многих компьютерных классах) как MSVC (компилятор среды Visual Studio) так и GCC/MinGW (компилятор среды Code::Blocks) используют реализации функций printf и scanf из библиотеки Microsoft MSVCRT.DLL. В этой библиотеке символом формата для 64-битного целого числа со знаком является %I64d или %lld, а для 64-битного целого числа без знака: %I64u или %llu.

Для того, чтобы ваше решение корректно работало вне зависимости от среды, рекомендуется всегда пользоваться символами %lld и %llu.

Приведённое замечание относится и к использованию функций printf и scanf в языке C++. Оно однако не касается использования в C++ объектов библиотеки streams (объекты cin, cout и cerr, а также классы ifstream и ofstream).

В языках Pascal, Java и Python разницы в использовании методов ввода-вывода между операционными системами нет.

Lehekülg viimati muudetud November 22, 2020, at 01:54 PM