Porównanie podpisanego i niepodpisanego znaku
To wydaje się takie dziwne. Znalazłem nieporozumienie. Używam gcc z char jako podpisanym char. Zawsze myślałem, że w wyrażeniach porównawczych (i innych wyrażeniach) podpisana wartość konwertuje na niepodpisaną, jeśli to konieczne.
int a = -4;
unsigned int b = a;
std::cout << (b == a) << std::endl; // writes 1, Ok
ale problem polega na tym
char a = -4;
unsigned char b = a;
std::cout << (b == a) << std::endl; // writes 0
jaki jest magiczny operator porównania, jeśli nie jest tylko bitowy?