This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

bug in the compiler??

Hi All,

I don't believe this is actually a bug, but can anybody explain why this code works correctly

void func(int v1, int v2){
	unsigned char code tbl[] = {'a', 'b', 'c', 'd', 0, '1', '2', '3', '4'};
	signed char xdata diff = v1 - v2;

	if (diff >= -4 && diff <= 4)
		printf("%c\n", tbl[diff + 4]);

}
and this doesn't?
void func(int v1, int v2){
	unsigned char code tbl[] = {'a', 'b', 'c', 'd', 0, '1', '2', '3', '4'};
	int xdata diff = v1 - v2;

	if (diff >= -4 && diff <= 4)
		printf("%c\n", tbl[diff + 4]);

}
Is this behaviour ANSI-compliant?

Cheers

0