Magia liczb

0

Czy coś się ostatnio zmieniło w matematyce? Dawno temu uczono mnie, że -1 < 1, tymczasem:

extr = extract_string(line, request->method, 32);
if ( extr < 1 ) {
    g_free(line);
    return FALSE;
};
g_print("METHOD>> %s, %d\n", request->method, extr);

Wyjście programu:

METHOD>> (null), -1
0

Wszysko jest dobrze, z tego co przedstawiłeś wynika, że extr jest którymś typem unsigned, ma tylko jedną wartość mniejszą od jedności, zero. W łańcuchu formatującym używasz %d, które traktuje przekazaną wartość jako signed. W momencie porównania extr jest widziane jako 4294967295, przy wypisywaniu jako -1 ponieważ mają identyczną reprezentację binarną.

0

Shit, wpisałem gsize zamiast gssize... Chyba czas iść spać. Dzięki za zwrócenie uwagi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1