Forum: Compiler & IDEs Charakter Array


von Harald hermenau (Gast)


Lesenswert?

Hallo,
ich erhalte vom Compiler die Warnung:
"warning: array subscript has type char"
für ein initialisiertes char Array "char AnzBuffer[0]"
Ich kann die Warnung nicht nachvollziehen.
Compiler: WINAVR 3.3.2
Prozessor: ATMega8

Vielen Dank für die Antworten

von Reiner (Gast)


Lesenswert?

char AnzBuffer[20] = {...};
char c;
char i = 3;
int j = 4;

c = AnzBuffer[i];       Warning
c = AnzBuffer[(int)i];  OK
c = AnzBuffer[j];       OK

Oder im Klartext:  Das Array subscript muß vom Typ integer sein.

von Harald hermenau (Gast)


Lesenswert?

Danke

von Matthias (Gast)


Lesenswert?

Hi

oder vom typ "unsigned char". Generell sollte man zum Zugriff auf
Arrays keine Datentypen verwenden die auch negative Wert annehmen
können.

Matthias

von Jörg Wunsch (Gast)


Lesenswert?

Warum nicht?

Konstrukte wie

char *cp, buf[N];

for (cp = buf; *cp != 0; cp++) {
  ...
  if (*cp == 'x' && cp > buf) {
    *cp = 0;
    cp[-1] = 'y';
    break;
  }
}

sind durchaus akzeptabel.

von Matthias (Gast)


Lesenswert?

Hi

#include <stdio.h>
int l;int main(int o,char **O,
int I){char c,*D=O[1];if(o>0){
for(l=0;D[l              ];D[l
++]-=10){D   [l++]-=120;D[l]-=
110;while   (!main(0,O,l))D[l]
+=   20;   putchar((D[l]+1032)
/20   )   ;}putchar(10);}else{
c=o+     (D[I]+82)%10-(I>l/2)*
(D[I-l+I]+72)/10-9;D[I]+=I<0?0
:!(o=main(c/10,O,I-1))*((c+999
)%10-(D[I]+92)%10);}return o;}

ist auch durchaus aktzektabel :-)
Weitere aktzektable Programme gibts hier http://www.de.ioccc.org

SCNR

Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.