why doesnt the following program work as expected:

	char x = 0xff;
	char* y = &x;
	if(*y == 0xff)
		return 1;
	return 0;
imo, it should return "1", but it doesnt. It seems like instead of comparing 0xff == 0xff, the compiler compares 0xffffffff == 0xff. Why?

If i use "byte" for this example, everything works as expected, even though it`s just defined as an "unsigned char".

typedef unsigned char	byte;