I have this code
union u_value {
    int i_value;
    long l_value;
    float f_value;
    double d_value;
    char *cp_value;
    int type;
};
union u_value create_int_value(int value) {
    union u_value val;
    val.i_value = value;
    val.type = INT;
    printf("Inside: %d, %d\n", value, val.i_value);
    return val;
}
The problem is that I can't set values inside union.
For example:
union u_value val = create_int_value(123);
printf("%d\n", val.i_value);
will print 0
What am I doing wrong?