Christian Kruse: String concat in c++

Beitrag lesen

你好 Martin,

Völlig schnurz. Wenn die CPU irgendwann über den Code herfällt, ist -1
genau dasselbe wie 0xFFFFFFFF, nur handlicher geschrieben.

Negative Zahlen werden nicht immer im Zweierkomplement abgebildet. Aus dem
Standard:

6.2.6.2 Integer types
   2 [...]
     If the sign bit is one, the value shall be modified in one of the
     following ways:
     — the corresponding value with sign bit 0 is negated (sign and
       magnitude);
     — the sign bit has the value -(2N) (two’s complement);
     — the sign bit has the value -(2N - 1) (one’s complement).

Das heisst, der Compiler hat die Möglichkeit, zwischen drei Darstellungen
zu wählen. Dein Code ist also in höchstem Maße Compiler-spezifisch.

OK, ich würde Assembler als die Mutter aller Sprachen bezeichnen, weil
jeder Compile-Vorgang, jede virtuelle Maschine später bei einer
Assembler-Art landet, [...]

Nö, du, ich habe schon VMs gesehen, die nur mit Syntax-Bäumen arbeiten und
den Schritt zum Assembler nicht machen.

Mit %n kannst du in die korrespondierende Integervariable schreiben,
wieviele Elemente printf bislang bearbeitet hat:

Das stimmt nicht: %n schreibt die Anzahl der geschriebenen Chars in die
Variable. Nicht die Anzahl der Elemente, die bearbeitet wurden.

Du liebe Güte - wo ist das denn her? Das habe ich hier auch zum ersten
Mal gelesen. Abgesehen davon ist mir absolut unklar, wozu das gut sein
soll.

printf() kann die Verarbeitung abbrechen - etwa, wenn in den Output-Stream
nicht mehr geschrieben werden kann, wegen eines vollen Send-Buffers oder so
(gibt dann ein EAGAIN). Eignet sich also z. B. um festzustellen, an welcher
Stelle man den Funktions-Aufruf fortsetzen muss.

D.h. mit %n schreibst du auf dem Stack!

Nein: kannst du auf den Stack schreiben. Man muss nicht. Nichts hindert
einen daran, die Variable auf dem Heap anzulegen :)

再见,
 克里斯蒂安

--
Block-Installation Nr. 5 | Renovation der Mensa-Nord
Q: God, root, what's the difference?
A: God is merciful.
http://wwwtech.de/