7

このサンプルコードを見てみましょう:

#include <stdio.h>

int main(void){
    int x = 1;
    if(*(char *)&x == 1) printf("little-endian\n");
    else printf("big-endian\n");
    return 0;
}

私はこの(または同様の)命令*(char *)&xを何度も見ましたが、それが何を意味するのかを完全に理解したいと思います!
つまり
、1)int変数のアドレスを取得し、
2)それをcharポインターにキャストします
。3)「newcharポインター」の最初の要素を数値1と比較します

4

1 に答える 1

5

あなたはほぼ正しいですが、より良いリストは次のようになります:

  1. のアドレスを取るx
  2. アドレスを文字へのポインタに変換します
  3. そのポインタを間接参照します。つまり、最初のポインタchar&x
  4. 文字値を整数と比較する1

これはかなりエッジの効いたコードであることに注意してください。読み取られる値は、マシンのバイトエンディアンに依存します。

于 2012-09-03T09:01:16.570 に答える