C Programming - Memory Allocation - Discussion

Discussion Forum : Memory Allocation - Find Output of Program (Q.No. 4)
4.
What will be the output of the program?
#include<stdio.h>
#include<stdlib.h>

int main()
{
    union test
    {
        int i;
        float f;
        char c;
    };
    union test *t;
    t = (union test *)malloc(sizeof(union test));
    t->f = 10.10f;
    printf("%f", t->f);
    return 0;
}
10
Garbage value
10.100000
Error
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
22 comments Page 1 of 3.

Saif said:   5 years ago
Union allocated with the higher value in it i.e. float the during DMA pointer gets the address of float type then when initialization of value 10.10f is done it will print 10.100000 because float takes 6 digits after the decimal point.
(1)

MGR said:   7 years ago
Nice Explanation, Thanks all.

Anu said:   7 years ago
thanks all for explaining.

Denish said:   8 years ago
Thanks for the explanation.

MDV AJAY said:   8 years ago
In this, t gets te dynamic address of 4 so it is assigned to f as t->f so 10.10f will becomes 10.100000 now we gotta know that f stands for 4 zeros.

Rajendra said:   9 years ago
Thanks for the detailed explanation.

Balaji said:   9 years ago
@Ganesh.

t will be holding the address of the pointer pointing to union datatype.

Ganesh said:   10 years ago
t = (union test *)malloc(sizeof(union test));

What value is there in "t"? Can you please explain in detail?

Ltte said:   10 years ago
f tells its float not number*f.

Lakshmi prasanna said:   1 decade ago
I can't understand this, please explain from staring any one.


Post your comments here:

Your comments will be displayed after verification.