0

これをプリプロセッサで使用しました

#define SQMETERS_PR_SEC 2 

そして、これはメイン関数で

printf(" to mow your lawn with a speed of %c.\n\n", SQMETERS_PR_SEC);

しかし、 %c は空白を返すだけです。

定数のプレースホルダーには何文字を使用しますか?

4

3 に答える 3

6

それは依存します。この場合、定数は小さな整数なので、で出力し%dます。

ただし、文字列定数は%s、などで出力されます。型に関係なく、定数を出力するための普遍的なトリックはありません。

その理由は、「定数」が実際にはマクロであるためです。つまり、その位置を超えた任意の時点でテキストSQMETERS_PR_SECが.に置き換えられます。それだけです-派手な解釈などはありません。テキストのコピー/貼り付けです。2

于 2013-09-09T11:44:27.563 に答える
3

あなたの問題は、それ%cがASCII値であるとすれば、文字を出力することです。

現在2は、制御文字「テキストの開始」の ASCII 値です。これは印刷できません。したがって、printfはプレースホルダー (空白など) を出力します。

数字を出力したい場合は、%d代わりに次を使用します。

printf(" do foo bar at %d kul\n", 2);
于 2013-09-09T11:49:09.147 に答える
3

define はコードを置き換えるだけで、 に似ていないものを関数に2解釈さcharれたものとして入れたいと言っているので、インデックス2のASCIIコードのエスケープシーケンスのその場所に入れるだけです。printf()'2'%c

定義が次のようになる場合:

#define SQMETERS_PR_SEC '2'

それなら正解でしょう。

于 2013-09-09T11:46:05.877 に答える