こんにちは私はCプログラミングに不慣れです。誰でもこのコード行が何をするか教えてください:
i = (sizeof (X) / sizeof (int))
このコードは、bdataの値を取得し、それをさまざまなケースと比較するときに、実際にはcaseステートメントで機能します。
一般に、このようなステートメントは、配列内の要素の数を計算するために使用されます。
以下のように整数配列を考えてみましょう。
int a[4];
これで、sizeof(a)
完了するとサイズとして返さ4*4 = 16
れます。4つの要素と各要素は4バイトです。
したがって、これを行うsizeof(a) / sizeof(int)
と、配列の長さまたはサイズである4が得られます。
int
これは、 namedの配列の要素数を計算しX
ます。
配列Xの長さを返します
これは、メモリ内のXのボリュームをコンピュータ内の整数のサイズ(2バイトまたは4バイト)で割ったものを計算します。iが整数の場合、それは整数除算です。それがフロートであり、Xに均一なボリュームがない場合、それは実際の除算です。
intサイズは変更できます。Xは実装に依存します。除算の結果は、iのタイプによって異なります。
これらすべての意味で、Xに適合するintの数を計算します。
一般的な慣習や個人的な経験に加えて、これが配列Xのサイズを計算すると考える理由はありませんi = (sizeof (X) / sizeof (int))
。ほとんどの場合これが当てはまりますが、理論的にはXは任意のタイプである可能性があるため、与えられた式はサイズの比率を計算します。あなたのvarXとintの(バイト単位で、あなたのX varがintに対してどれだけ多くのメモリを占有するか)
さらに、Xが配列へのポインター(float * X、Cで配列を宣言する別の方法)である場合、この式は32ビットアーキテクチャでは1と評価されます。ポインタは4バイトになり、intも4バイトになります=>i = sizeof(X) / sizeof(int) (=1)