64-bitised täisarvud ja printf/scanf

по-русски | in English

Teadmiseks C kasutajatele: 64-bitiste täisarvude lugemine ja kirjutamine on Windowsi ja Linuxi all veidi erinev.

Linuxi all (muuhulgas testimisserveris) kasutab GCC funktsioonide printf ja scanf realisatsioone GNU teegist glibc ja seal on 64-bitise märgiga täisarvu (long long) tunnuseks %Ld või %lld ja 64-bitise märgita täisarvu (unsigned long long) tunnuseks %Lu või %llu.

Windowsi all (paljudes arvutiklassides) kasutavad nii MSVC (Visual Studio kompilaator) kui ka GCC/MinGW (Code::Blocks'i vaikekompilaator) funktsioonide printf ja scanf realisatsioone Microsofti teegist MSVCRT.DLL ja seal on 64-bitise märgiga täisarvu tunnuseks %I64d või %lld ja 64-bitise märgita täisarvu tunnuseks %I64u või %llu.

Selleks, et teie lahendus töötaks õigesti mõlemas keskkonnas, on kõige parem kasutada alati %lld ja %llu tunnuseid.

See kehtib ka printf ja scanf kasutamisel C++ programmides, kuid ei puuduta C++ streams-teegi (objektid cin, cout ja cerr ning klassid ifstream ja ofstream) kasutajaid.

Pascali, Java ja Pythoni sisend-väljundoperatsioonid töötavad Linuxi all samamoodi kui Windowsi all.

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