回答編集履歴

1

加筆

2016/01/17 00:17

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -5,3 +5,59 @@
5
5
  printf()などでサイズを表示させて見ましょうd^^
6
6
 
7
7
  また、char str[38]の最初にchar name[20]がおかれるとは限らないと言う事も覚えておいてください。
8
+
9
+ [加筆]
10
+
11
+ 以下のソースで実験d^^・・・環境とコンパイラはFreeBSD10.2-RELEASE-p8、clang version 3.4.1
12
+
13
+ ```C
14
+
15
+ #include<stdio.h>
16
+
17
+ #include<string.h>
18
+
19
+
20
+
21
+ typedef union{
22
+
23
+ char str[38];
24
+
25
+ struct{
26
+
27
+ char name[20];
28
+
29
+ char age[3];
30
+
31
+ char blo[3];
32
+
33
+ char height[6];
34
+
35
+ char weight[5];
36
+
37
+ }jo;
38
+
39
+ }Jou;
40
+
41
+
42
+
43
+ int main(void){
44
+
45
+
46
+
47
+ Jou j;
48
+
49
+ strcpy(j.str,"0123456789012345678901234567890123456");
50
+
51
+ printf("%lu %s \n", sizeof j, j.jo.age); return 0;
52
+
53
+ }
54
+
55
+ ~/test >./a.out
56
+
57
+ 38 01234567890123456
58
+
59
+ ~/test >
60
+
61
+ ```
62
+
63
+ ここで見る限りは問題はなさそうですが、コンパイラ依存なので注意してください。