mikrocontroller.net

Forum: Compiler & IDEs Indexnumerierung


Autor: Mutti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe folgende 64 Datenregister zum beschreiben vorgesehen. 
Diese heißen alle WRDS und dann die Nummerierung.

WRDS01
WRDS02
WRDS03
...
WRDS64

Die Namen sind festgelegt.
Das ist ne üble Sache alle einzeln unternander zu beschreiben. Ich würde 
lieber eine FOR Schleife verwenden. Kann ich die Nummerierung da 
irgendwie mit reinbringen?
In diesem Format:
for (i=1;i<65;i++) {
WRDS[i] = ...
}

?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die 64 Datenregister durch ein Array ersetzbar sind, dann ja. 
Liegen die Teile im Speicher linear hintereinander?

Achte aber darauf, daß in C der erste Arrayindex 0 ist.

Also NICHT

  for (i = 1; i < 65; i++)

sondern

  for (i = 0; i < 64; i++)

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja. ein beispiel für ein integer-array:
int WRDS[64] = {0};  /*64 integer in einem array, erster wert wird z.b. mit WDRS[0] angesprochen*/


pumpkin

Autor: Mutti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, der erste Index beginnt bei Null.
Aber zum besseren Lesen des Codes will ich ab 1 anfangen. Die [0] bleibt 
einfach ungenutzt.

Kann man doch machen?!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man zwar, sollte man sich aber gar nicht erst angewöhnen. Der Code 
ist dadurch nicht lesbarer, sondern eher massiv fehlerträchtig, da kein 
anderer C-Programmierer auf diese, ähm, merkwürdige Idee käme.
Lass es besser sein.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fange lieber bei 0 mit zaehlen an. Mit der zeit gewöhnt man sich dran. 
Das ist einfach der stqandart und wenn man mal mit fremdem Code arbeitet 
hat man keien Probleme

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kein problem, aber nicht schön (wie auch Rufus schon meinte):
int WRDS[64] = {0};

for(i=1; i<=64; i++)
{
  WRDS[i-1] = ...
}

pumpkin

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, auf solche "Lesbarkeits"-Experimente sollte man sich nicht 
einlassen. Gar nicht erst damit anfangen. Wirklich nicht.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die erste Version der 'Numerical Recipes in C' hatte so ein
abstruses Schema benutzt um den vorher verwendeten Pascal Code
auf C umzusetzen.
Das Resultat: Das Werk war voll mit Fehlern.

In C wird mit 0 zu zählen angefangen. Das sollte man
einfach so akzeptieren.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl heinz Buchegger

>In C wird mit 0 zu zählen angefangen. Das sollte man
>einfach so akzeptieren.

Wenn sie in C programmieren will muss sich Mutti sowieso von 
Hausfrauenlogik verabschieden.
duckundwech

SCNR ;-)
Falk

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> Die erste Version der 'Numerical Recipes in C' hatte so ein
> abstruses Schema benutzt um den vorher verwendeten Pascal Code
> auf C umzusetzen.

Ist das in der aktuellen Ausgabe anders?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weis ich nicht.
Ich hab noch die mit den Fehlern gekauft.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Fehler mögen korrigiert sein, aber das mit dem Index ab 1 wird 
zumindest in der Ausgabe auf books.google.com immer noch gemacht.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im K&R Buch fand ich es logisch erklärt:
Der Index ist der Abstand vom ersten Element. Also wert(0) ist 0 Abstand 
vom ersten Element, der erste Wert.

Übrigens: Informatiker am Bahnhof: "0, 1, 2. Wo ist mein dritter 
Koffer?"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.