SORU
31 EKİM 2008, Cuma


Neden C Sendikalara ihtiyacımız var mı?

Sendikalar ne zaman kullanılmalıdır? Neden onlara ihtiyacımız var?

CEVAP
31 EKİM 2008, Cuma


Sendikalar genellikle ikili temsili tamsayılar ve yüzen arasında dönüştürmek için kullanılır:

union
{
  int i;
  float f;
} u;

// Convert floating-point bits to integer:
u.f = 3.14159f;
printf("As integer: x\n", u.i);

Ancak bu teknik olarak tanımsız davranışlara göre C standart (sadece sözde okuma alanına en yakın zamanda yazılmış), davranacaktır, iyi tanımlanmış bir şekilde hemen hemen herhangi bir derleyici.

Sendikalar da bazen sözde polimorfizmi uygulamak için C, bir yapı, etiketi ne içerdiğini gösteren vererek, ve sonra mümkün olan türleri bir araya unioning tarafından kullanılır

enum Type { INTS, FLOATS, DOUBLE };
struct S
{
  Type s_type;
  union
  {
    int s_ints[2];
    float s_floats[2];
    double s_double;
  };
};

void do_something(struct S *s)
{
  switch(s->s_type)
  {
    case INTS:  // do something with s->s_ints
      break;

    case FLOATS:  // do something with s->s_floats
      break;

    case DOUBLE:  // do something with s->s_double
      break;
  }
}

Bu struct S boyutu sadece 12 bayt yerine 28 olmasını sağlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Film Riot

    Film Riot

    16 NİSAN 2006
  • jat4011

    jat4011

    16 EKİM 2010
  • LinusTechTips

    LinusTechTip

    25 Kasım 2008