Co oznacza "i" w argumencie funkcji?

Co oznacza "i" w argumencie funkcji?

Wątek przeniesiony 2015-02-07 14:32 z C/C++ przez Shalom.

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

cześć mam pytaie mam taki oto kod

Kopiuj
PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
	return Py_BuildValue("i", CPythonPlayer::Instance().GetStatus(POINT_GOLD));
} 

"i" = int?
jeśli bym chciał zmienić to na unsigned long long to muszę zmienić "i" na "ULL" ?
i po stronie serwera z int na unsigned long long czy wystarczy samo long long?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

dałeś mi do C i pythona a to jest c++ lol? i próbowałem nie działa wywala błąd mam 2147483647. a w grze wywala mi kosmiczna liczbę

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
3

Słabo mi jak czytam takie posty.

This manual documents the API used by C and C++ programmers who want to write extension modules or embed Python

I z tego API właśnie korzytasz. Więc łaskawie mógłbyś korzystać z tejże dokumentacji. Jakbyś pokazał jak próbowałeś to może by sie coś poradziło...

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

próbowałem tak // binary

Kopiuj
PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
    return Py_BuildValue("K", CPythonPlayer::Instance().GetStatus(POINT_GOLD));
} 

a tak python // client

Kopiuj
money = 0
		if text and text.isdigit():
			try:
				money = uint64(text)
			except ValueError:
				money = 19999999999

po stronie serwera

Kopiuj
	//LIMIT_GOLD
	GOLD_MAX = 40000000000LLU,
Kopiuj
long long      gold
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

unsigned long long gold; jeśli już

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

a mam pytanie a to jest różnica jak daje ULL czy LLU?

nie dziala dalej po 2 147 483 648 wywala liczbę 200kkkkk

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A jesteś pewien że to nie wynika z tego ze coś tak sam masz w kodzie zaklepane? Bo gdyby problem leżał tam gdzie ci sie wydaje to po 2 147 483 648 wyskoczyłaby ujemna liczba. Może po prostu w kodzie jest jakiś check na to?

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

wychodzi mi liczba unsigned long long po przekroczeniu liczby int. jak dodam 1 złota to wywala 0 i do liczby int działa dobrze ale potem wywala liczbę unsigned long long

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A jesteś pewien że wszędzie masz faktycznie unsigned long long int? Bo ja obstawiam że nie i tyle.

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

mam wszędzie unsigned long long
a przy wartości np 8678678678678ULL

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Cudów nie ma. Pozapinaj się debugerem i popatrz jakie typy danych ci tam śmigają. Ja myśle że gdzieś masz konwersje na inta.

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

sprawdziłem wszystko wszędzie zmieniłem oprócz bazy danych w c++

Kopiuj
 			"gold = %d, "

znalazłem coś takiego

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

No %d to ci long longa nie wypisze...

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

to zmiennie na %llu.a jak nie będzie działać to chyba problem lezy w bince?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Problem moze leżeć w wielu miejscach dlatego bez debugera to jak wróżenie z fusów ;]

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

jak mogę uzyć debuggera? używam windowsa a kompiluję za pomocą freebsd i vs 2008

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Skompiluj z symbolami dla debugera a potem uruchom z poziomu debugera ten program.

WK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

tak da się tylko skompilować binke bo game to jest jako plik

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.