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 Reply Children
  • "I will contact Keil for informations, thanks."

    Please post the result when you get one.

  • Today i received a mail from Keil:

    Mr. Schneebauer wrote:

    "prinzipiell haben Sie Recht, daß es sich hier um einen Fehler handelt.
    Normalerweise versucht der Compiler das '-1' in die Konstanten zu
    verpacken um das Programm besser zu optimieren. Wir haben diesen Fehler
    nun auch behoben. Da Änderungen an zentralen Funktionen gemacht wurden,
    muß dieser Compiler noch ausführlich getestet werden bevor wir ihn
    ausliefern können."


    Basicly, what he writes is:
    Yes, its a bug. The bug is fixed and the new compiler-version will be tested.

    Stefan, thank you for verifying this problem.