C-Tutorial: Expressions

Schnelle objektorientierte, kompilierende Programmiersprache.
acclrtr
Beiträge: 19
Registriert: Sa Dez 21, 2013 4:49 pm

Re: C-Tutorial: Expressions

Beitrag von acclrtr » Sa Jan 25, 2014 10:29 pm

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.
Zuletzt geändert von acclrtr am Sa Jan 25, 2014 10:50 pm, insgesamt 1-mal geändert.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: C-Tutorial: Expressions

Beitrag von cloidnerux » Sa Jan 25, 2014 10:37 pm

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
Was auch absolut legitim ist.
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;
Erst durch eine Zuweisung kann sich der Wert einer Variable ändern!
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C-Tutorial: Expressions

Beitrag von Xin » So Jan 26, 2014 11:10 am

Stoni hat geschrieben:also habe ich geschrieben
a='%c', 178 der compiler setzt dort keinen Fehler zeigt aber als Ergebnis 9571 an.
Wenn das eine Codezeile ist, wird a auf 178 gesetzt. %c ist ein Argument für die Funktion printf, das interpretiert also die Funktion.

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 );
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
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.
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.

Antworten