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

  • International Secret Agents Concerts

    Internationa

    2 Aralık 2008
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007
  • NPR

    NPR

    22 NİSAN 2006