形式指定子は、画面に印刷されるデータのタイプ、または標準入力からスキャンされるデータのタイプを定義するために使用される特殊文字または文字のシーケンスです。形式指定子は「%」文字で始まり、その後にさまざまな種類のデータの文字列が続きます。
常にVerilog
つまり、どのタイプのデータを保存し、どのデータを印刷するかを指定します。形式指定子は主に scanf() 関数と printf() 関数で使用されます。
たとえば、次を使用して整数を読み取って出力したい場合、 scanf() および printf() 関数では、%i または %d のいずれかが使用されますが、両方には微妙な違いがあります。 %私 そして %d フォーマット指定子 。
%d は符号付き 10 進整数を指定し、%i はさまざまな基数の整数を指定します。
「%d」と「%i」は printf() と同様に動作します
printf と一緒に使用する場合、%i と %d の形式指定子に違いはありません。
次の例を考えてみましょう。
C
// C program to demonstrate> // the behavior of %i and %d> // with printf statement> #include> int> main()> {> > int> num = 9;> > // print value using %d> > printf> (> 'Value of num using %%d is = %d
'> , num);> > // print value using %i> > printf> (> 'Value of num using %%i is = %i
'> , num);> > return> 0;> }> |
>
>
Java数学ランダム出力
Value of num using %d is = 9 Value of num using %i is = 9>
%d と %i の動作は scanf() とは異なります
%d は基数 10 を想定し、%i は基数を自動検出します。
改行Python
したがって、両方の指定子を入力関数で使用した場合の動作は異なります。したがって、012 の値は、%i では 10 になりますが、%d では 12 になります。
- %d は整数値を符号付き 10 進整数として受け取ります。つまり、正の値とともに負の値も受け取りますが、値は 10 進数で指定する必要があります。そうしないと、ガベージ値が出力されます。
( 注記 : 入力が 012 のような 8 進形式の場合、%d は 0 を無視し、入力を 12 として受け取ります。
%i は、10 進数、16 進数、または 8 進数タイプの整数値を受け取ります。
16 進数形式で値を入力するには、値の前に 0x を付けて指定する必要があり、8 進数形式で値を入力するには、値の前に 0 を付けて指定する必要があります。
次の例を考えてみましょう。
C
// C program to demonstrate the difference> // between %i and %d specifier> #include> int> main()> {> > int> a, b, c;> > printf> (> 'Enter value of a in decimal format:'> );> > scanf> (> '%d'> , &a);> > printf> (> 'Enter value of b in octal format: '> );> > scanf> (> '%i'> , &b);> > printf> (> 'Enter value of c in hexadecimal format: '> );> > scanf> (> '%i'> , &c);> > printf> (> 'a = %i, b = %i, c = %i'> , a, b, c);> > return> 0;> }> |
>
二分探索木からの削除
>
出力
Enter value of a in decimal format: 12 Enter value of b in octal format: 012 Enter value of c in hexadecimal format: 0x12 a = 12, b = 10, c = 18>
説明
- a の 10 進数値は 12 です。
- b の 10 進数値 12 (8 進数) は 10 です
- c の 10 進数値 12 (16 進数) は 18 です