c++ - C union char array prints 'd' on mac? -
i new c/c++, curious know issue seeing.
typedef union { int a; float c; char b[20]; } union; int main() { union y = {100}; printf("union y :%d - %s - %f \n",y.a,y.b,y.c); } and output is
union y :100 - d - 0.000000 my question ...why 'd' getting printed? changed order in union still same output. if declare char f[20] outside union nothing gets printed. having macbook lion image , using xcode. in advance
i changed order in union still same output.
the order of elements in union doesn't change because elements of union use same piece of memory. code prints 100 y.a , d y.b because both expressions interpret same bytes. so, example, if add line sets y.b , prints again:
union y = {100}; printf("union y :%d - %s - %f \n",y.a,y.b,y.c); y.b = 'f'; printf("union y :%d - %s - %f \n",y.a,y.b,y.c); you'll see y.a , y.c. change whenever y.b changes, , vice versa. y.a should change 102 in second printf(), since that's ascii character code 'f'.
Comments
Post a Comment