Mam następujący kod"porównanie jest zawsze prawdziwe ze względu na ograniczony zakres typu danych" ostrzeżenie w C?
//Point.h
#define WIDTH 8
#define HEIGHT 8
typedef struct Point
{
char x;
char y;
} Point;
//Board.c
#include <stdbool.h>
// Some other functions that we don't care about...
bool inBounds(Point * p)
{
return p->x >= 0
&& p->x <= WIDTH
&& p->y >= 0
&& p->y <= HEIGHT;
}
Kiedy skompilować ten (PPU-gcc 4.1.1), otrzymuję następujące ostrzeżenie
warning: comparison is always true due to limited range of data type
chociaż zakres char jest -127 do 127 a WIDTH ma wartość 8, która mieści się w zakresie znaku. Próbowałem już jawnej obsady WIDTH do char, ale nadal mam błąd.
prostu zmienić struct do int, i zobaczyć, co się stało? –
W twoim przypadku potrzebujesz atoi lub statycznego rzutowania dla x i y, a następnie porównaj z wysokością i szerokością. –