0

16 ビット長でなければならない変数があります。プラットフォーム上で独立して正確に 16 ビットになるように定義するにはどうすればよいですか?

と定義できますshortが、プラットフォームによっては 16 ビット以上になる場合があります。

4

4 に答える 4

0

<stdint.h>int16_tが利用できない場合、回避策はビットフィールドである可能性があります。ビットフィールドは構造体または共用体の内部でのみ有効であるため、1 つにラップする必要があります。

#include <stdio.h>

struct auw {
    int sixteen :16;
        };

int main(void)
{

struct auw one = {16*1024 }, two, result;

two = one; /* assigmment is easy*/

        /* but addition is a bit more painful */
result.sixteen = one.sixteen + two.sixteen -1;

printf("Result=%d\n", (int) result.sixteen );

return 0;
}
于 2013-07-17T12:37:05.103 に答える
0

ポータブルな符号なし 16 ビット整数が必要な場合は、 と を使用uint16_tし、符号付き 16 ビット整数の場合は を使用しますint16_t

inttypes.hstdint.hは両方とも で紹介されていC99ます。を使用している場合はC89、独自の型を定義する必要があります。

于 2013-07-17T12:33:16.497 に答える