写了联合体演示程序

This commit is contained in:
Wang Boyang 2025-07-19 17:36:54 +08:00
parent 62f0b69744
commit b6a04b612b
3 changed files with 42 additions and 0 deletions

4
ex35/Makefile Normal file
View File

@ -0,0 +1,4 @@
CFLAGS=-Wall -g
clean:
rm -f ex35

BIN
ex35/ex35 Executable file

Binary file not shown.

View File

@ -17,4 +17,42 @@ struct Variant {
typedef struct Variant Variant; typedef struct Variant Variant;
void Variant_print(Variant *var)
{
switch (var -> type)
{
case TYPE_INT:
printf("INT: %d\n", var -> data.as_integer);
break;
case TYPE_FLOAT:
printf("FLOAT: %f\n", var -> data.as_float);
break;
case TYPE_STRING:
printf("STRING: %s\n", var -> data.as_string);
break;
default:
printf("UNKNOWN TYPE: %d", var -> type);
}
}
int main (int argc, char *argv[])
{
Variant a_int = {.type = TYPE_INT, .data.as_integer = 100};
Variant a_float = {.type = TYPE_FLOAT, .data.as_float = 100.34};
Variant a_string = {.type = TYPE_STRING, .data.as_string = "YO DUDE!"};
Variant_print(&a_int);
Variant_print(&a_float);
Variant_print(&a_string);
// here's how you access them
a_int.data.as_integer = 200;
a_float.data.as_float = 2.345;
a_string.data.as_string = "Hi there.";
Variant_print(&a_int);
Variant_print(&a_float);
Variant_print(&a_string);
return 0;
}