Stoni, es gibt einen Unterschied zwischen "gibt aus" und "ergibt".
Wenn du
printf("irgendein String");
schreibst, dann schreibt das Programm auf deine Ausgabe was in dem String steht.
Die Funktion printf sieht sich davor aber noch an ob du da eine Marke gesetzt hast und was an diese Marke muss.
Wenn du "a=@" ausgeben wölltest, dann musst du
printf("a=%c",64);
benutzen.
Warum? Weil %c spezifiziert das die Zahl als character, also als Buchstabe interpretieren soll.
(siehe: http://www.cplusplus.com/reference/cstdio/printf/)
Jetzt schaut dein Programm in die ASCII Tabelle, an der Stelle die du als Zahl angegeben hast und gibt dann statt der Marke den Buchstaben von dem Zeichen in der Tabelle aus.
EDIT:
Ups, du willst was anderes machen. Siehe Antwort unter dieser hier.
C-Tutorial: Expressions
Re: C-Tutorial: Expressions
Zuletzt geändert von acclrtr am Sa Jan 25, 2014 10:50 pm, insgesamt 1-mal geändert.
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: C-Tutorial: Expressions
Was auch absolut legitim ist.Ja so ähnlich hatte ich es gemeint nur berechnet er das jetzt ja nicht mehr schreibe ich also nach:
printf("a%c = %d", 178, a*a);
printf("a: %d\n",a);
dann zeigt er mir weiterhin a=22 an
Der Computer ist dumm, er macht genau das was du ihm befiehlst.
Und du befiehlst im hier, das Ergebnis von a*a anzuzeigen, du willst aber das Ergebnis von a*a Speichern, in a. Daher musst du deinem Computer auch mitteilen, dass genau das passieren soll:
Code: Alles auswählen
a = a*a;
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C-Tutorial: Expressions
Wenn das eine Codezeile ist, wird a auf 178 gesetzt. %c ist ein Argument für die Funktion printf, das interpretiert also die Funktion.Stoni hat geschrieben:also habe ich geschrieben
a='%c', 178 der compiler setzt dort keinen Fehler zeigt aber als Ergebnis 9571 an.
Den Wert 9571 kann ich mir ohne Quelltext nicht erklären.
Code: Alles auswählen
char asciiQuadrat = 178;
char a = 4;
printf( "a%c = %d\n", asciiQuadrath, a * a );
Die ASCII Tabelle beschreibt, mit welchem Bitmuster eine Zahl, zum Beispiel 178, auf dem Bildschirm gedruckt werden soll. Der Wert 65 wird als A gedruckt. Computer verstehen keine Buchstaben, sondern nur Zahlenwerte. Die zugeordneten Zeichen haben aber keine mathematische Bedeutung.Storni hat geschrieben:wie muss ich das Formulieren damit er die 178 als Wert der ASCII Tabelle benutzt und was hat er mir da nun berechnet den egal ob ich 22² * 178 rechne oder anders ich komme nicht auf das angezeigte Ergebnis
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.