Das ist mein C-Code, kompiliert mit gcc.
#include
int main()
{
int a=1;
switch(a)
{
int x=10;
case 1:
printf("%d\n",printf("%d\b",x));
break;
default:
printf("%d\n",printf("%d\b",x));
}
return 0;
}
printf() soll die Anzahl der erfolgreich gedruckten Elemente zurückgeben. printf("%d\b", x)
sollte von alleine 10 drucken (da das \b den Druckzeiger um einen Schritt zurücknimmt (zur Ziffer 0 in 10) und danach nichts mehr zum Drucken da ist. Es sollte also nur 10 gedruckt sein. Das sind 2 Zeichen. Nun würde das äußere printf 2 anzeigen. Die Ausgabe sollte also 102 sein. Die tatsächliche Ausgabe, die ich sehe, ist 2.
Und im Fall von verschachtelten printf
s wird die Druckzeigerposition erinnert? Das heißt, wenn es ein \b
im inneren printf
gibt, würde der Druckzeiger einen Schritt zurücknehmen. Und wenn die Steuerung dann zum äußeren printf
geht, wird diese geänderte Position erinnert? Wird sie über dieses letzte Zeichen drübergeschrieben?