以下は私が問題を抱えているコードです。私は定数を理解し、関数のsizeofを理解していると信じていますが、何かが欠けているはずです。 %d
としてTOTAL_ELEMENTSでprintf
声明 - - TOTAL_ELEMENTSのprintf
声明 - - それは7 を返す2 - それは(予想通り) 5を返します - 代替5にするために:ここで私は自分で解決するために何しようとしたものですループループが正しく実行される - 任意の名前のグローバルint変数を初期化し、それを(sizeof(array)/sizeof(array[0]))
に設定します。 TOTAL_ELEMENTSが実行されるforループの変数を使用します。ループが正しく実行されます。Cプログラム - Sizeofと定数について一緒に使用
これは、定数とsizeof関数の両方に関係するものでなければならない - 私は配列/配列[0]も陽性だが、テストと代入を通して、問題が何であるかを理解する。私はsizeof関数だけでなく、無駄に定数を読んでいる。私は検索しようとしましたが、私が探しているものを完全には特定していないので、どこにもいませんでした。私は必ずしも答えが必要なわけではありませんが、誰かが正しい方向に私を指し示すことができれば、それは非常に高く評価されるでしょう。前もって感謝します。
#include <stdio.h>
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0;
}
多分私は使用しているコンパイラです。配列のすべての要素が表示されるはずですが、実行しようとしたときに発生するのは、出力されずに実行されて終了することだけです。 – ManofManyTigers
大丈夫です。私はideone.comのコードをCコンパイラ/エグゼキュータにコピーしましたが、出力されずに出力されます。しかし、元の記述に記載されているコードを変更すると、期待どおりに動作します。まだ分かりません。 – ManofManyTigers
同じ結果が得られました...出力はありません。期待される出力を得る唯一の方法は 'int dmax =(TOTAL_ELEMENTS-2);'を割り当て、 'for(d = -1; d <= dmax; d ++)'にループを変更することです。 –