e102.c

左辺をキャストせずに右辺をキャストする


static struct ctag { char a; } Rc = {0x12} ; static struct Ltag { long a; } RL = {0x12345678} ; struct tag { struct ctag * ctagp ; } R ; int main() { struct tag *mainp = &R ; (struct Ltag *)(mainp->ctagp) = &Rc; printf("%x¥n",mainp->ctagp->a) ; (struct Ltag *)(mainp->ctagp) = &RL; printf("%x¥n",mainp->ctagp->a) ; *((struct Ltag *)(mainp->ctagp))= RL; printf("%lx¥n",((struct Ltag *)(mainp->ctagp))->a) ; return(0) ; }
解説: 左辺をキャストせずに 右辺をキャストして下さい。