Autor Wątek: C i dodawanie do siebie dwóch unii  (Przeczytany 1043 razy)

Offline Galfados

  • Użytkownik

# Wrzesień 28, 2016, 16:30:41
Witam,
mam strukturę która reprezentuje obiekt:
// pseudo code
typedef struct {
  uint8_t type;
  Value value;
} Object;

Typ value to jest unia która wygląda mniej więcej tak:
typedef union {
 int i;
 float f;
} Value;

I nasuwa mi się pytanie, czy jest jakiś sposób na dodawanie, odejmowanie, mnożenie itp. do siebie tych wartości? Oprócz tego najbardziej oczywistego i najmniej przejrzystszego, czyli sprawdzanie każdej możliwej sytuacji? Bo takie rozwiązanie robi za duży bajzel w kodzie. Ma ktoś jakieś pomysły? Z góry dziękuje za pomoc.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline karol57

  • Użytkownik

# Wrzesień 28, 2016, 16:39:48
W C++ mógłbyś przeciążyć operator, a w C  zostaje ci tylko zrobienie tego w brzydki sposób i funkcje w stylu: Object Object_op_add(Object lhs, Object rhs). Nic tu pseudomagicznie nie zdziałasz chyba, że masz jakiś dziwny kompilator z rozszerzeniami które na to by pozwalały.

BTW. Czemu się męczysz w C?

Offline Galfados

  • Użytkownik

# Wrzesień 28, 2016, 16:44:58
Czyli nie ma jakiś magicznych "trików" i trzeba trajhardzić każdą możliwą sytuacją ;c

A w C piszę bez większego powodu, po prostu chciałem sobie w tym języku popisać.

Offline Xion

  • Moderator
    • xion.log

# Wrzesień 29, 2016, 21:41:44
int i float mają zupełnie inną reprezentację, więc nie wiem jakich magicznych tricków byś się spodziewał. Nie wspominając już o fakcie, że docelowy typ jest wcale nie jest jednoznaczny: czy np. (float)4 + (int)5 to jest (int)9 czy (float)9?