Chcę móc używać dużych dodatnich liczb całkowitych (8 bajtów) w moim projekcie, mimo że sizeof (unsigned long) daje 8 w moim systemie, czytałem, że w większość systemów bez znaku ma tylko 4 bajty i zdecydowałem się dać niepodpisany długi czas, ponieważ gwarantowane jest co najmniej 8 bajtów.unsigned long long vs unsigned long (przenośność punktu widzenia)
Im więcej go używam, jednak widzę, że nie jest on również super przenośny, na przykład w niektórych systemach (w zależności od kompilatora) printf formatuje go za pomocą% llu, w niektórych formatuje go za pomocą% lld.
Mój kod będzie działać tylko na 64-bitowych urządzeniach debian, w których bez znaku długi będzie wynosił 8 bajtów. Przenośność nie jest dużym problemem. Czy w takich okolicznościach przesada jest zbyt długa, niepoprawnie długa, czy istnieją inne zalety używania niepodpisanych długich i niepoprawnie długich?
Czy próbowałeś 'uint64_t'? To jest w ' .' –
Mysticial
jaka jest zaleta używania go przez dłuższy czas bez znaku? –
Zatrzymuje kompilację, jeśli nie masz typu z dokładnie 64 bitami, a długiego wzdłuż dłuższego typu. Oba są obecne w C++ 11, oba są często obecne jako rozszerzenie, ale nie byłbym zaskoczony, gdyby jeden był czasem obecny, a nie inny.Jeśli go nie masz, stdint.h jest łatwiej emulować (zakładając, że typ jest obecny) niż długo. – AProgrammer