Cで次のプログラムを考えると、
#include <stdio.h>
int main()
{
printf(" \"Books %% OR %% apparels\"");
getchar();
return 0;
}
このプログラムは Books % OR % apparels を出力します。%% の意味を知りたいのですが、不要に見えるので、%% の意味を知りたいです。
%
に渡される変数のフォーマットに使用されるフォーマット エスケープ シーケンスを示しますprintf()
。
そのため、文字を印刷するにはエスケープする必要があります%
。
http://en.cppreference.com/w/c/io/fprintf
toを置き換える%%
と%
、このようになります
#include <stdio.h>
int main (int argc, char *argv[]) {
printf(" \"Books % OR % apparels\"");
return 0;
}
には 2 つのエスケープ シーケンスがありますprintf()
。
"% O"
[当て推量] これは有効なエスケープ シーケンスを生成しないため、printf()
無視してそのまま出力します。
"% a"
printf()
空float
のパラメータ リストからを取得し、「16 進浮動小数点、小文字」( 、上記の Web ページを参照)として出力しようとします。C 呼び出し規則 (免責事項: 私はこれについての専門家ではありません) により、メモリからのガベージが使用され、結果が説明されます。%a
実際、私のコンパイラ(gcc 4.4.3)は両方に警告を出しました:
$ gcc a.c
a.c: In function ‘main’:
a.c:3: warning: unknown conversion type character ‘O’ in format
a.c:3: warning: too few arguments for format