fork download
  1. #include <stdio.h>
  2.  
  3. typedef union
  4. {
  5. struct {
  6. float x;
  7. float y;
  8. float z;
  9. float w;
  10. };
  11. float val[4];
  12. } VERTEX4F;
  13.  
  14. int main() {
  15. VERTEX4F v;
  16. v.x = 0.1f;
  17. v.y = 0.2f;
  18. v.z = 0.3f;
  19. v.w = 0.4f;
  20. printf("Sizeof VERTEX4F is %d \n",sizeof(VERTEX4F)) ; //16 (4*4)
  21. printf("VERTEX4F component x is %f \n", v.x); //0,5
  22. printf("VERTEX4F component y is %f \n", v.y);//0,5
  23. printf("VERTEX4F component z is %f \n", v.z);//0,5
  24. printf("VERTEX4F component w is %f \n", v.w);//0,5
  25. for(int i = 0;i<4;i++)
  26. {
  27. printf("VERTEX4F component %d is %f \n",i, v.val[i]); //на первой итерации - 0,5, на остальных хуита.
  28. }
  29. return 0;
  30. }
  31.  
  32. //Чому так?
Success #stdin #stdout 0s 4396KB
stdin
Standard input is empty
stdout
Sizeof VERTEX4F is 16 
VERTEX4F component x is 0.100000 
VERTEX4F component y is 0.200000 
VERTEX4F component z is 0.300000 
VERTEX4F component w is 0.400000 
VERTEX4F component 0 is 0.100000 
VERTEX4F component 1 is 0.200000 
VERTEX4F component 2 is 0.300000 
VERTEX4F component 3 is 0.400000