나는 다음과 같은 코드가 난이 (PPU-GCC 4.1.1)를 컴파일하면'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;
}
, 나는 다음과 같은 경고를받을 문자의 범위는 -127 (127)에 비록
warning: comparison is always true due to limited range of data type
WIDTH는 8입니다. 이는 char의 범위 내에 있습니다. 이미 char에 WIDTH를 명시 적으로 시도했지만 오류가 발생했습니다.
은 int로 당신의 구조체를 변경하고, 무슨 일이 생긴 것을 볼 수? –
귀하의 경우에는 x와 y에 대해 atoi 또는 static cast를 수행 한 다음 높이와 너비와 비교해야합니다. –