2016-04-18 16 views
-3

Es wird gesagt, dass in c, b ++; ist gleich b = b + 1; Wenn dies die Tatsache ist, test ++ in meinem Code, warum einen Fehler bei der Kompilierung generieren. Test + 1 funktioniert gut, aber Test ++ funktioniert nicht.aber warum?Adresse wird nicht erhöht?

#include<stdio.h> 
int main(void) 
{ 
    char test[80]="This is a test"; 
    int a=13; 
    for(;a>=0;a--) 
    { 
     printf("%c",*(test++); 
    } 
} 
+5

Arrays sind keine Zeiger. – EOF

+2

Welcher _Compiler-Zeitfehler_? Etwas wie ** error: Lvalue erforderlich als Inkrement Operand **. Ich denke, es ist selbsterklärend ... – LPs

+0

@LPs: Wahrscheinlich ist etwas wie "Ausdruck' test' kein lvalue ". – EOF

Antwort

1

Die ++ und -- Operatoren sind nicht für Arrays definiert.

v++; wäre das gleiche wie v = v + 1;. Angenommen, v wurde in ein Array eingegeben, würde dies bedeuten, dass es einem Array zugewiesen wird, das nicht definiert ist.

+0

Oh Junge, oh Junge ... - also was ist hier falsch, bitte? * Seufz * – alk

1
char test[80] = "This is a test"; 
char *p = test; 

for(int a = 0; a < 14; a++) 
{ 
    printf("%c", *(p++)); 
} 
+0

Und wie beantwortet das die Frage? – alk

+0

@alk Es bietet eine mögliche Lösung. Andere Antworten decken ab, was falsch ist –

+0

Die Frage ist "* aber warum? *", Nicht "aber wie?". Ich möchte nicht zusätzlich sagen, dass eine Lösung falsch ist, aber ohne einen Grund zu geben, warum der ursprüngliche Ansatz dies nicht tut Arbeit, es fehlt ein wesentlicher Teil. – alk

1

Nun, für eine Sache, ist b++nicht die gleiche wie b=b+1.
Aber selbst wenn es wäre - ich denke, Sie werden feststellen, dass Sie einen ähnlichen Fehler erhalten, wenn Sie versuchen, test = test + 1.

+0

Ich denke, das wäre besser als Kommentar geeignet gewesen. – alk

Verwandte Themen