これをプリプロセッサで使用しました
#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'
それなら正解でしょう。