-4
는 ->
는보다 더 높은 우선 순위를 가지고 있습니다,(구조체 이름 *) b-> c 무엇을 의미합니까?
typedef struct {
char *a;
char *val;
} kvp;
하고 연산자 우선 순위에 대해 묻는 경우가 kvp *p = (kvp *)n->val;
는 ->
는보다 더 높은 우선 순위를 가지고 있습니다,(구조체 이름 *) b-> c 무엇을 의미합니까?
typedef struct {
char *a;
char *val;
} kvp;
하고 연산자 우선 순위에 대해 묻는 경우가 kvp *p = (kvp *)n->val;
로 선언 때 p
무엇
typedef struct node {
void *val;
node *next;
} node;
node *n;
kvp *p = (kvp *)n->val;
을 다음과 같은 구조를 감안할 때 캐스트.
// This expression
(kvp *)n->val
// is evaluated as this:
(kvp *)(n->val)
// NOT this:
((kvp *)n)->val
Source (구글 "C의 연산자 우선 순위")는
@IharobAlAsimi는 왜 엄격한 앨리어싱을 위반? 'val'은'void *'입니다. –
정의되지 않은 동작을 유발할 수도있는 캐스트입니다. _ 정확히 당신이 달성하고자하는 것은 무엇입니까? –
'void * val'의 타입이'kvp *'이고,'n'이 유효한 경우에만 유효합니다. – Stargateur