0

私はCで非常に長い配列を定義し、その間に要素を横にではなく縦に書きたいと思っています。入力したコード ブロックは、状況を示しています。配列 "/" の定義を続けるために行末にどの文字を使用する必要がありますか? 機能しますが、前後の要素は出力されず、代わりに 0 または 1 が出力されます。どうすればこれを達成できますか?

    int i, grades[40] = {49, 80, 84, 73, 89, 78, 78, 92, 56, 85, 10, 84, 59, 56 
62, 53, 83, 81, 65, 81, 69, 69, 53, 55, 77, 82, 81, 76, 79, 83, 74, 86
78, 55, 66, 60, 68, 92, 87, 86}; 

貢献していただきありがとうございます。ちなみに、私はUbuntu 12.04を使用しています(UbuntuとWindowsでは終了文字が異なる場合があると思います)。

編集:カンマが犯人でした。お時間をいただき申し訳ありません。

4

3 に答える 3

5

改行のエスケープは、プリプロセッサ ディレクティブと文字列内でのみ必要です。好きな空白をすべて入れて入力してください。コンパイラが文句を言わない限り、あなたは良いはずです。

于 2013-10-29T17:58:56.923 に答える
1

ほとんどの場合、C コンパイラは空白を気にしません (文字列などを除く)。つまり、構文がまだ有効である限り、好きなだけ空白を含めることができます。唯一の制約は、各トークンを少なくとも 1 つの空白で区切る必要があることです。

したがって、要するに、最後の要素の前のすべての要素の後にコンマがある場合、必要な数のスペース、タブ、および改行を使用して配列を書き出すことができます。

于 2013-10-29T18:16:17.740 に答える
1

他の回答で説明したように、コンパイラは、ステートメントが複数行にまたがっているかどうかを認識するのに十分スマートです。

ただし、実際には、ステートメントが次の行に続くことをコンパイラに明示的に伝える方法があります\。あなたの例/では、バックスラッシュの代わりにスラッシュ () を使用し、,. これにより、整数除算が行われ、0観察1されました。

「\」を使用する場合は、次のようなコードを記述できます。

int i, grades[40] = {49, 80, 84, 73, 89, 78, 78, 92, 56, 85, 10, 84, 59, 56, \ 
     62, 53, 83, 81, 65, 81, 69, 69, 53, 55, 77, 82, 81, 76, 79, 83, 74, 86, \
     78, 55, 66, 60, 68, 92, 87, 86}; 
于 2013-10-29T18:44:01.050 に答える