a=a\%b
-
Da hat wohl der Ersteller des Hausaufgabenscripts geschludert.
\% ist in Textstrings dazu da, das % Zeichen zu schreiben, weil nur das % Zeichen in Strings als Operator fungiert.
Der Script-Ersteller hat wohl diese Syntax in der Rechenaufgabe versehentlich eingebaut.
Er wollte wohl schreiben:a%b
dachte aber wohl daß er das % als \% schreiben müsse (war wohl ein wenig verwirrt).
Die Aufgabe lautet also:
a=a%b;
-
Bei dem Slash handelt es sich um einen Tippfehler.
Die Anweisung
a = a % bwäre korrekt. Dabei erhält man mit dem Modulo-Operator (%) den Rest der Division.Beispiel:
4 % 2 = 0 (4 lässt sich glatt durch 2 teilen => kein Rest)
7 % 4 = 3 (7 lässt sich nicht glatt durch 4 teilen => Rest 3)
-
Don Carsto schrieb:
\% ist in Textstrings dazu da, das % Zeichen zu schreiben, weil nur das % Zeichen in Strings als Operator fungiert.
Wer hat dir das erzählt? Das stimmt auf keinen Fall für C und C++, in Formatstrings braucht man ja auch keinen Backslash.
-
Ein Doppeltes Prozentzeichen
%%ist in Formatstrings dazu da, ein % Zeichen zu schreiben, weil nur das % Zeichen in Strings als Operator fungiert.Der Lehrer wird eher Probleme mit \LaTeX oder so gehabt haben.
-
Oh weh.. Stimmt, hab ich was verwechselt.
Mußte es gerade direkt mal ausprobieren, um sicher zu sein.Danke für den Hinweis.
Wie komme ich auf sowas?Gruß,
DC
-
Don Carsto schrieb:
Wie komme ich auf sowas?
ROFL
Das fragst du uns? Willst du echt ne Antwort auf die Frage?
-
Ne, habe ich mir schon selbst beantwortet.
Da ich immer sehr selten das % Zeichen brauchte merkte ich mir lediglich, daß ich dafür eine Escape-Sequenz brauche um es auszugeben.
Und ich dachte immer Escape-Sequenzen sind alle mit \ .Als es dann mal wieder soweit war, daß ich das % Zeichen brauchte, schrieb ich \%, was natürlich nicht klappte.
Nach langer Suche kam ich dann auf %%.
Lange Zeit später brauchte ich wieder mal das % Zeichen. Also was schrieb ich?
\% natürlich, um wiederum zu merken, daß es ja nicht klappt, und %% richtig ist.
Und heute schon wieder. \% ist falsch. %% ist korrekt.Nun hoffe ich doch, daß ich es mir nun endlich gemerkt habe.
Ist aber auch zu blöde %%. Warum nicht \% ? Was hätte dagegen gesprochen, das im Standard so zu definieren?Gruß,
DC
-
Don Carsto schrieb:
Ist aber auch zu blöde %%. Warum nicht \% ? Was hätte dagegen gesprochen, das im Standard so zu definieren?
% ist logischer.
Der Formatstring wird so angeschaut:
0.char *ptr = formatgoto 1, wenn++ptr != '%'goto 1, wenn++ptr == '%'
3. Parse Formatbezeichner (ptr+++++++)
4. Schreibe formatiertes Objektgoto 1
Du willst so etwas:
2. wenn--ptr == '\\':ptr += 2,goto 1Der Parser muss wieder zurückspringen, das ist sowohl für Menschen, als auch für den Computer schlecht, alles wird langsamer.
Übrigens fällt "\%" in die Kategorie Escape-Sequenz, wenn überhaupt müsste es "\%" heissen, das ist eindeutig zu hässlich.
Denn der Backslash hat die Bedeutung "jetzt kommt ein spezielles Zeichen mit dem folgenden Namen" und nicht "das folgende Zeichen muss als solches aufgefasst werden und darf nicht interpretiert werden".Um ehrlich zu sein, bin ich noch nie auf die Idee gekommen, "\%" zu schreiben, das ist für mich alles andere als intuitiv. IMHO hätte überhaupt nichts dafür gesprochen, "\%" zu nehmen.
-
Naja es gibt da ja:
http://de.wikipedia.org/wiki/Escape-Sequenz\' \" \? \\Und alles gibt das aus, was nach dem \ steht.
Also (für mich) logischerweise auch \%.Da muß man sich ja vertun.
-
Ist halt die Frage, um welche Sprache es geht. In vielen Sprachen ist halt \ das "magische" Zeichen. In C-Strings gibt es \n, \t, etc., da macht es auch Sinn, dass es \\ gibt.
Format-Strings sind - was das betrifft - eine eigene Sprache, in der % das magische Zeichen ist. Es gibt %s, %c, %d - also logischerweise auch %%.
-
Ahh, aus dieser Sicht leuchtet es mir nun ein.
Gruß,
DC
-
Ich danke euch
