-4

Cで次のプログラムを考えると、

#include <stdio.h>

int main() 
{ 
    printf(" \"Books %% OR %% apparels\""); 
    getchar(); 
    return 0; 
}

このプログラムは Books % OR % apparels を出力します。%% の意味を知りたいのですが、不要に見えるので、%% の意味を知りたいです。

4

1 に答える 1

5

%に渡される変数のフォーマットに使用されるフォーマット エスケープ シーケンスを示します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()

  1. "% O"

    [当て推量] これは有効なエスケープ シーケンスを生成しないため、printf()無視してそのまま出力します。

  2. "% 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
于 2013-09-24T17:26:54.720 に答える