1

私はその本を読んでい"Objective-C Programming The Big Nerd Ranch Guide"ます。


彼らはこのコードを出します:

void congratulateStudent(char student, char course, int numDays)
{
printf("%s has done as much %s Programming as I could fit into %d days.\n", student, course, numDays);
}

そしてこれでそれを呼びます

congratulateStudent("Mark", "Cocoa", 5);

これは私にこの警告を与えます:

Format specifies type 'char *' but the argument has type 'char'

その本は間違っていますか?

4

4 に答える 4

2

タイプミスがあるかもしれません。

Charのように、一重引用符で囲まれた1文字のみを意味し'a'ます。

定数文字列は二重引用符で囲まれ、次のchar*ようにまたは文字ポインタに減衰します。

"Hello World"
于 2012-10-10T20:49:37.177 に答える
1

はい、これが本がそうするように言っているのであれば、それは間違いなく間違いです。警告のようなメソッドのパラメータが言うように、char*でなければなりません。

于 2012-10-10T20:49:19.923 に答える
1

はい、それは正しくありません。おそらく印刷エラーです。それらをポインタにするだけです:

void congratulateStudent(char* student, char* course, int numDays)

技術的には、誤ったフォーマット文字列をに渡すことはCでは未定義の動作ですprintf

于 2012-10-10T20:49:34.340 に答える
0

はい、本にはタイプミスがあります。

C関数の両方のパラメーターのchar*代わりにを使用する必要がありますchar

于 2012-10-10T20:49:25.993 に答える