64-bitised täisarvud ja printf
/scanf
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.