これをプリプロセッサで使用しました
#define SQMETERS_PR_SEC 2
そして、これはメイン関数で
printf(" to mow your lawn with a speed of %c.\n\n", SQMETERS_PR_SEC);
しかし、 %c は空白を返すだけです。
定数のプレースホルダーには何文字を使用しますか?
これをプリプロセッサで使用しました
#define SQMETERS_PR_SEC 2
そして、これはメイン関数で
printf(" to mow your lawn with a speed of %c.\n\n", SQMETERS_PR_SEC);
しかし、 %c は空白を返すだけです。
定数のプレースホルダーには何文字を使用しますか?
それは依存します。この場合、定数は小さな整数なので、で出力し%d
ます。
ただし、文字列定数は%s
、などで出力されます。型に関係なく、定数を出力するための普遍的なトリックはありません。
その理由は、「定数」が実際にはマクロであるためです。つまり、その位置を超えた任意の時点でテキストSQMETERS_PR_SEC
が.に置き換えられます。それだけです-派手な解釈などはありません。テキストのコピー/貼り付けです。2
あなたの問題は、それ%c
がASCII値であるとすれば、文字を出力することです。
現在2
は、制御文字「テキストの開始」の ASCII 値です。これは印刷できません。したがって、printf
はプレースホルダー (空白など) を出力します。
数字を出力したい場合は、%d
代わりに次を使用します。
printf(" do foo bar at %d kul\n", 2);
define はコードを置き換えるだけで、 に似ていないものを関数に2
解釈さchar
れたものとして入れたいと言っているので、インデックス2のASCIIコードのエスケープシーケンスのその場所に入れるだけです。printf()
'2'
%c
定義が次のようになる場合:
#define SQMETERS_PR_SEC '2'
それなら正解でしょう。