2017-12-14 23 views
0

나는 이해할 수없는 누군가의 코드에서 뭔가를 보았다. 그것은 진술서에서 무엇을 말하는가? 여기오른쪽 화살표가 오른쪽 화살표와 같음

static cell_ptr UD_self(cell_ptr c) { return c->U = c->D = c; } 

정의됩니다 :

struct cell_s; 
typedef struct cell_s *cell_ptr; 
struct cell_s { 
    cell_ptr U, D, L, R; 
    int n; 
    union { 
     cell_ptr c; 
     int s; 
    }; 
}; 
+2

어떤 언어입니까? – Yashas

+2

문법적으로 유효한 코드라도 추악한 코드입니다. 두 개의 할당을 수행하고 할당 된 값 (이 경우'c')을 반환합니다. 최신 컴파일러는 매우 훌륭하고'c-> D = c; c → U = c; return c; – Ronald

답변

1

그것은이 글을 쓰는 단지 속기 방법은 다음과 같습니다

{ 
    c->D = c; 
    c->U = c->D; 
    return c->U; 
} 

문은 값을 반환 = 할당 연산자은 단지 할당 한 return c->U = c->D = c; 작동하기 때문에 . 이 값은 다음 할당에서 사용됩니다. 오른쪽에서 왼쪽으로 연결되므로 의미는 return (c->U = (c->D = c));