Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Usunięcie limitu yang - jaki typ danych będzie bezpieczny (optymalny) ?

Nieaktywny

Featured Replies

Opublikowano

Domyślnie jest narzucone w grze maksymalnie 2kkk yang, gdyż typ danych 'int'  posiada zakres : -2,147,483,648 do 2,147,483,647.
W poradnikach jak można znaleźć serfując po forach (mówie o zdjęciu limitu który wrzucił paszka) żeby podmienić z
int na long long
Gdzieś też czytałem że dając
long long można zepsuć konwersje MSVC, że również unsignedów nie polecają używać.
Również wyczytałem że lepiej dać
int64_t niż long long.
Ale też słyszałem że na
int64_t może wystąpić core
Jakie są wasze sugestie, preferencje?


 


 

 

Opublikowano
25 minut temu, KoYGeR napisał(a):

int64_t


Od strony bin jak podmienić w tym przypadku?

PythonItemModule PRZED kiedy mam int
 

PyObject * itemGetIBuyItemPrice(PyObject * poSelf, PyObject * poArgs)
{
    CItemData * pItemData = CItemManager::Instance().GetSelectedItemDataPointer();

    if (!pItemData)
        return Py_BuildException("no selected item data");

    return Py_BuildValue("i", pItemData->GetIBuyItemPrice());
}


Jak zmienie na long long to wtedy brzmi to tak:
 

PyObject * itemGetIBuyItemPrice(PyObject * poSelf, PyObject * poArgs)
{
    CItemData * pItemData = CItemManager::Instance().GetSelectedItemDataPointer();

    if (!pItemData)
        return Py_BuildException("no selected item data");

    return PyLong_FromLongLong(pItemData->GetIBuyItemPrice());
}

@KoYGeRto jak będzie w przypadku int64_t?  
return PyLong_Fromint64_t(pItemData->GetIBuyItemPrice()); ???

Opublikowano

Dla typu int64_t używasz long long te dwa typy są równoważne.

PyObject * itemGetIBuyItemPrice(PyObject * poSelf, PyObject * poArgs)
{
    CItemData * pItemData = CItemManager::Instance().GetSelectedItemDataPointer();

    if (!pItemData)
        return Py_BuildException("no selected item data");

    return PyLong_FromLongLong(pItemData->GetIBuyItemPrice());
}
Opublikowano

W skrócie najlepiej po prostu z paczki od paszki podmienić long long na int64_t

i będzie trybić ?

Opublikowano
Godzinę temu, Azurri napisał(a):

W skrócie najlepiej po prostu z paczki od paszki podmienić long long na int64_t

i będzie trybić ?

Nie znam tematu.

 

Co do zastosowania Py_BuildValue to wystarczy zamiast "i" uzyc "L" w przypadku typu danych int64_t

Opublikowano
9 godzin temu, Azurri napisał(a):

W skrócie najlepiej po prostu z paczki od paszki podmienić long long na int64_t

i będzie trybić ?

Przecież ci pisałem powyżej, że te typy są równoważne i czy wybierzesz long long czy int64_t to jest jeden chuj. W programowaniu nie istnieje najlepiej bo zawsze można lepiej. 😄

 

Jak już chcesz się tak mocno zagłębiać. To czym jest int64_t czy inne int8_t albo int32_t? Czym te typy się różnią od przykładowo int lub byte? Tym, że mają stały rozmiar niezależnie od architektury systemu. Teraz przykładowo używasz sobie typu long dla architektury 32 bit i będzie miał 4 bajty, a na architekturze 64bit ten sam typ long będzie miał 8 bajtów. Co może prowadzić do wielu krytycznych problemów wtedy. 

 

Wracając do tego przypadku, long long ma co najmniej te 8 bajtów, a 8 bajtów to 64 bity. A to wychodzi z tego, że 1 bajt jest równy 8 bitów czyli 8x8 masz 64 bity. 

image.png.d9b1407bac0c9a25d1f34546f2f327f3.png

Opublikowano

dzięki wszystko ogarnąłem można zamknąć temat 

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.