Τι θα τυπώσει το πρόγραμμα;
#include <stdio.h>
union anything {
char c; int i; float f; double d;
};
int main() {
union anything a1;
a1.i = 0x42;
printf("%d %c\n", a1.i, a1.c);
a1.c = 'C';
printf("%d %c\n", a1.i, a1.c);
printf("%zu\n", sizeof(a1));
return 0;
}
Όλα τα μέλη της ένωσης ξεκινούν από το ίδιο byte, οπότε το c είναι το πρώτο byte
του i. Σκεφτείτε ποιο byte ενός ακεραίου είναι πρώτο σε ένα little-endian
μηχάνημα, και ότι το μέγεθος της ένωσης καθορίζεται από το μεγαλύτερο μέλος.
Αριθμός στον οδηγό: Α20.11
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: slides-lec20-union-size ·
Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec20-union-size.html ·
Markdown (GitHub)