これは、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 です。
ネストされたprintfs の場合、印刷ポインタの位置は記憶されていますか? つまり\b、 の中printfに があると、印刷ポインタが 1 歩遅れます。そして、コントロールが今外側に行くとき、printfその変更された位置は記憶されていますか? その最後の文字を上書きしますか?