3

以下のようなコード行に出くわしました

#define IM 0x1

IMが何を表すかは知っていますが、IMが何を0x1表すのか、その使用法は何か、defineステートメントでの使用法の重要性を知ることに興味があります。

私はCを初めて使用し、この特定のアイテムを検索しましたが、見つかりませんでした。よろしくお願いします。

4

4 に答える 4

9

これは、16進数(基数16)の1の定義にすぎません。これはおそらく、コード内のマジックナンバーを回避するために使用されます。魔法数は、プログラマーが説明なしにコードで直接数を使用する場合です。例えば

int x = 32;
x -= 8;

このコードはほとんど意味がありませんが、私がこれを行うと

#define TOTAL_BITS 32
#define BITS_PER_BYTE 8

int x = TOTAL_BITS;
x -= BITS_PER_BYTE;

コードは非常に明確です。いずれにせよ、マクロ(つまり#define)は、その内容をコードに表示される場所に直接置き換えます。したがって、式などを使用する場合は、それを親で囲むのが最適です。

于 2012-04-25T13:40:31.450 に答える
6

これは 16 進数の 1 で、バイナリ フラグを行う場合は通常このように定義します。だからあなたは持っているでしょう

0x1
0x2
0x4
0x8
0x10

設定しているビットを見ることができます。

于 2012-04-25T13:43:16.827 に答える
4

これは、16進数(基数16)形式で表されるナンバーワンです。

http://en.wikipedia.org/wiki/Hexadecimal

于 2012-04-25T13:40:33.153 に答える
3
#define IM    0x1

それは別の位置番号システムです: 16 進数です。ここでは、数値 « 1 » の 16 進数形式です。

于 2012-04-25T13:43:36.723 に答える