Re: 심사문제 59.1 질문있습니다.
, 도장_ 관리자님이 작성UNIT 25에서 표 25-1을 보면 연산자 우선순위가 있습니다.
/tmp/100938751/main.c:29:38: error: member reference base type 'void' is not a structure or union result1 = (struct Point3D*)ptr[1].x; ~~~~~~^~
참조하려는 멤버 타입이 void라는 것입니다. 원하는 struct Point3D 구조체로 변환되지 않은 상태입니다. 연산자 우선순위 때문에 그렇습니다.
ptr은 void *입니다.
표 25-1을 보면 우선순위 1이 [] 배열 첨자입니다. 따라서 형변환이 아니라 배열 첨자를 먼저 해석합니다.
표 25-1을 보면 우선순위 2가 (자료형)으로 자료형 변환입니다.
따라서 해당 코드는 void *에 배열 첨자를 사용하는 게 첫 번째입니다.
우선순위를 바꿔 주려면 먼저 처리할 연산을 ()로 묶어줘야 합니다.