Re: [algogeeks] Re: HOW TO CALCULATE THA size of union
union A{ long int y[5]; union B{ double g; union C{ int k; union D{ char ch; int x[5]; }; }; }; }; just removed the instances of unions from the given declaration and tested on dev A 20 B 8 C 4 D 20 On Sat, Dec 8, 2012 at 6:39 PM, shiv narayan narayan.shiv...@gmail.comwrote: but when i compile it on Dev C it gives 24..whats the reason ? On Fri, Dec 7, 2012 at 7:19 AM, Don dondod...@gmail.com wrote: The actual size is system dependent because the language doesn't specify the size of int or long int. I'll assuming the common convention that sizeof(int)=4 and sizeof(long int)=8. The size of a union is the size of the largest element in the union. So sizeof(D) = 5*sizeof(int)=20 C and B will be the same, because there is nothing bigger in any of them. sizeof(A) will be 40 which is the size of an array of eight long ints. Don On Dec 7, 5:42 am, zerobyzero narayan.shiv...@gmail.com wrote: what will be the size of union A ,B,C and D. also please explain the logic. * union A{* * long int y[5];* * union B{* *double g;* *union C{* * int k;* * union D{* *char ch;* *int x[5];* * }s;* *}a;* * }b;* *}*p;* -- -- Shiv Narayan Sharma Jt. Secretary CSI-DTU +919971228389 www.jugadengg.com -- -- Regards, Aashish Mann --
[algogeeks] Re: HOW TO CALCULATE THA size of union
Your code is different from the original question. You don't declare an instance of D, C, or B. Just declaring the type does not allocate any storage. Don On Dec 10, 12:29 pm, ashish mann ashishman...@gmail.com wrote: union A{ long int y[5]; union B{ double g; union C{ int k; union D{ char ch; int x[5]; }; }; }; }; just removed the instances of unions from the given declaration and tested on dev A 20 B 8 C 4 D 20 On Sat, Dec 8, 2012 at 6:39 PM, shiv narayan narayan.shiv...@gmail.comwrote: but when i compile it on Dev C it gives 24..whats the reason ? On Fri, Dec 7, 2012 at 7:19 AM, Don dondod...@gmail.com wrote: The actual size is system dependent because the language doesn't specify the size of int or long int. I'll assuming the common convention that sizeof(int)=4 and sizeof(long int)=8. The size of a union is the size of the largest element in the union. So sizeof(D) = 5*sizeof(int)=20 C and B will be the same, because there is nothing bigger in any of them. sizeof(A) will be 40 which is the size of an array of eight long ints. Don On Dec 7, 5:42 am, zerobyzero narayan.shiv...@gmail.com wrote: what will be the size of union A ,B,C and D. also please explain the logic. * union A{* * long int y[5];* * union B{* * double g;* * union C{* * int k;* * union D{* * char ch;* * int x[5];* * }s;* * }a;* * }b;* * }*p;* -- -- Shiv Narayan Sharma Jt. Secretary CSI-DTU +919971228389 www.jugadengg.com -- -- Regards, Aashish Mann --
Re: [algogeeks] Re: HOW TO CALCULATE THA size of union
but when i compile it on Dev C it gives 24..whats the reason ? On Fri, Dec 7, 2012 at 7:19 AM, Don dondod...@gmail.com wrote: The actual size is system dependent because the language doesn't specify the size of int or long int. I'll assuming the common convention that sizeof(int)=4 and sizeof(long int)=8. The size of a union is the size of the largest element in the union. So sizeof(D) = 5*sizeof(int)=20 C and B will be the same, because there is nothing bigger in any of them. sizeof(A) will be 40 which is the size of an array of eight long ints. Don On Dec 7, 5:42 am, zerobyzero narayan.shiv...@gmail.com wrote: what will be the size of union A ,B,C and D. also please explain the logic. * union A{* * long int y[5];* * union B{* *double g;* *union C{* * int k;* * union D{* *char ch;* *int x[5];* * }s;* *}a;* * }b;* *}*p;* -- -- Shiv Narayan Sharma Jt. Secretary CSI-DTU +919971228389 www.jugadengg.com --
[algogeeks] Re: HOW TO CALCULATE THA size of union
The actual size is system dependent because the language doesn't specify the size of int or long int. I'll assuming the common convention that sizeof(int)=4 and sizeof(long int)=8. The size of a union is the size of the largest element in the union. So sizeof(D) = 5*sizeof(int)=20 C and B will be the same, because there is nothing bigger in any of them. sizeof(A) will be 40 which is the size of an array of eight long ints. Don On Dec 7, 5:42 am, zerobyzero narayan.shiv...@gmail.com wrote: what will be the size of union A ,B,C and D. also please explain the logic. * union A{* * long int y[5];* * union B{* * double g;* * union C{* * int k;* * union D{* * char ch;* * int x[5];* * }s;* * }a;* * }b;* * }*p;* --