これは、gcc でコンパイルされた私の C コードです。
#include<stdio.h>
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() は、正常に印刷された要素の数を返すことになっています。
printf("%d\b", x)
単独で 10 を出力する必要がありました (\b は印刷ポインターを 1 ステップ (10 の数字 0 まで) 後ろに移動し、その後は何も出力しないためです。したがって、10 を出力する必要があります。これは 2 文字です。これで、外側の printf は 2 を表示します。出力は 102 であるはずです。実際に表示される出力は 2 です。
ネストされたprintf
s の場合、印刷ポインタの位置は記憶されていますか? つまり\b
、 の中printf
に があると、印刷ポインタが 1 歩遅れます。そして、コントロールが今外側に行くとき、printf
その変更された位置は記憶されていますか? その最後の文字を上書きしますか?