Datum:
Guten Tag, ich habe mein erstes Testprogramm für eine Struktur getippt. Ich habe 3 Punkte, welche mir nicht ganz klar sind(als Kommentare im Code). Ich bitte euch um eine ganz kurze Erklärung. Vielen Dank!
#include <stdio.h> #include <string.h> struct lagerverwaltung { int artikelnummer; char artikelbezeichnung[100]; //[100] seit wann Größenangabe char??? int artikelanzahl; }; int main() { struct lagerverwaltung artikel; artikel.artikelnummer=1234567890; //Wieso darf 0 nicht am Anfang stehen? strcpy(artikel.artikelbezeichnung, "Testartikel 1234567890"); //strcpy??? artikel.artikelanzahl=123; printf("Artikelnummer: %d\n", artikel.artikelnummer); printf("Artikelbezeichnung: %s\n", artikel.artikelbezeichnung); printf("Artikelanzahl: %d\n\n", artikel.artikelanzahl); system("PAUSE"); return 0; } |
Datum:
Da Mo schrieb: > Guten Tag, > > ich habe mein erstes Testprogramm für eine Struktur getippt. Ich habe 3 > Punkte, welche mir nicht ganz klar sind(als Kommentare im Code). Ich > bitte euch um eine ganz kurze Erklärung. Ich finde mich im Zwiespalt wieder. Alle deine 3 Fragen sind von der Sorte: Die Antwort darauf findet sich in jedem noch so grindigem C-Buch und die Kentnis der Antworten auf diese Fragen sind eigentlich auf dem Level von 'Kapitel 4 von 30'. Besorg dir ein C-Buch (einige gibts auch als Online-Version). Du hast einfach mehr davon, wenn du nicht durch Fragen in einem Forum dein 1/8 Wissen anlassbezogen auf 1/4 Wissen upgradest sondern wenn du stattdessen systematisch in die Geheimnisse von C eingeführt wirst. Und zwar mit den relevanten Details, wie zb: "Wie funktioniert eigentlich String-Verarbeitung in C?" In jedem noch so grindigem C-Buch ist das ein eigenes Kapitel und normalerweise einer der ersten Stolpersteine für jeden C-Lernenden. Und ja. Dieses Kapitel kommt lange vor Strukturen. Frage 1: Schon mal was von Arrays gehört? Frage 2: Weil alle Zahlen, die mit 0 beginnen, Oktalzahlen sind Frage 3: Weil Arrays nicht zuweisungskompatibel sind.
Datum:
Karl Heinz Buchegger schrieb: > Frage 2: Weil alle Zahlen, die mit 0 beginnen, Oktalzahlen sind Nicht, wenn danach ein x kommt :-)
Datum:
... und wenn Du schon am C-Buch-Lesen bist, kannst Du Dich auch gleich über die "Länge" (Bitbreite) des Typs "int" informieren - mich stören folgende Codezeilen etwas: Da Mo schrieb: > int artikelnummer; > ... > artikel.artikelnummer=1234567890;
Datum:
besser: ... über die Größe der Datentypen auf Deinem System informieren.
Datum:
int -> 4Byte Wo liegt das Problem?
Datum:
und wenn das dann geklärt ist, mal in einer schwachen Stunde (abends, wenn man nicht einschlafen kann) über die Frage nachdenken: Ist eigentlich Alles was wir im Alltag als "...nummer" bezeichnen auch eine Nummer im mathematischen Sinn? Beispiele: Telefon-'Nummer' +43 732 148763 Serien-'Nummer' SN87-4532-867 Segel-'Nummer' AUT 79 Artikel-'Nummer' AC856/52-BLAU .... Sind das tatsächlich "Nummern" im mathematischen Sinne? Ist daher ein Datentyp wie int oder long dafür angebracht oder nicht?
Datum:
Ich wollte Deine Aussage nur etwas verallgemeinern ohne Deine mangelhaften Rechenfähigkeiten aufzudecken. (2^31 > 1234567890)
Datum:
Das war natürlich an Patrick gerichtet, nicht an Da Mo!
Datum:
Ist schon OK! :-)
Datum:
Da Mo schrieb: > int -> 4Byte Wenn das in deinem C-Buch steht, wirf es weg. Es sei denn, es handelt sich um ein Buch speziell für den PC. Dann kauf dir zusätzlich ein C-Grundlagenbuch. > Wo liegt das Problem? Daß in C int auch nur 16 Bit breit sein kann. Es hängt vom Compiler ab.m Und es gibt eigentlich kaum einen Grund, int zu verwenden, wenn man 32 Bit zwingend voraussetzt. long wäre dann besser geeignet, oder gleich einer von den Typen aus stdint.h wie z.B. int_least32_t.