Tôi có đoạn code sau'luôn đúng vì giới hạn phạm vi loại dữ liệu' trong 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;
}
Khi tôi biên dịch này (PPU-gcc 4.1.1), tôi nhận được cảnh báo sau đây
warning: comparison is always true due to limited range of data type
mặc dù phạm vi của char là -127 đến 127 và WIDTH là 8, cũng nằm trong phạm vi của một char. Tôi đã thử một diễn viên rõ ràng của WIDTH đến một char, nhưng vẫn có lỗi.
chỉ cần thay đổi cấu trúc của bạn để int, và xem những gì happend? –
Trong trường hợp của bạn, bạn cần phải atoi hoặc tĩnh đúc cho x và y, sau đó so sánh với chiều cao và chiều rộng. –