0
#include<stdio.h>
int main()
{
int a;
printf("%..geeksforgeeks..%");

getchar();
return 0;
}

出力:%.0.geeksforgeeks..%

誰でも理由を説明できますか???

4

2 に答える 2

1

なぜこの正確な出力が得られるのかはわかりませんが、問題はメタ文字としてprintf使用されるため、文字通りのパーセント記号を出力したい場合は、それを2倍にする必要があります.%

printf("%%..geeksforgeeks..%%\n")

printfまたは、リテラル文字列を出力するために使用しないでください:

fputs("%..geeksforgeeks..%\n", stdout);

printf技術的に言えば、追加の引数 (フォーマットされるアイテム) の数よりも多くの「生きている」 (二重化されていない) % 記号が文字列に含まれていると、未定義動作トリガーされます。コンピューター全体のクラッシュを含む、このような驚くべき動作。

于 2013-06-10T15:27:50.553 に答える