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

array index type of signed int

Hi list,

i'm working with c51v750a. My problem:

int array[ 0] _at_ 0x7600; //xdata
unsigned char index = 0; //xdata

printf("%d", &array[ index]);
printf("%d", &array[(unsigned char)(index - 1)]); //what is wrong?

// Result:
// 30208 --> 0x7600 (correct)
// 30206 --> 0x75FE == array[ -1] incorrect, // expected array[255] @ 0x77FE

I've read in Compiler's changelog [v7.50] that there was a fix for array with signed int index.

I don't need a workaround, but this seems like a compiler-bug. Or is my "logic" incorrect?

Thanks in advance,
Lars

Parents
  • Hi,

    Not realy an answer but a question, doesn't the line 'array[0] _at 0x7600' generate a compiler error (invalid dimension size)? and should instead be 'array[0x0100] _at 0x7600'

    But as regards your question, what you have written is what i would expect and to me suggests that keil are treating the index as signed even though you have declared/cast it as unsigned.

    Mark.

Reply
  • Hi,

    Not realy an answer but a question, doesn't the line 'array[0] _at 0x7600' generate a compiler error (invalid dimension size)? and should instead be 'array[0x0100] _at 0x7600'

    But as regards your question, what you have written is what i would expect and to me suggests that keil are treating the index as signed even though you have declared/cast it as unsigned.

    Mark.

Children
No data