&&& 는 뭘 하는 건가요?

조회수 2546회

밑의 코드를 gcc -Wall/-Waddress옵션으로 컴파일하면 warning: the address of ‘i’ will always evaluate as ‘true’ [-Waddress] 이 떠요.

근데 이게 왜 뜨는지, 무슨 뜻인지 모르겠는데 설명해주실 분 있나요?

소스코드

#include <stdio.h>

volatile int i;

int main()
{
    int c;

    for (i = 0; i < 3; i++) 
    {
         c = i &&& i;
         printf("%d\n", c);
    }

    return 0;
}

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    c = i &&& i; = c = i && (&i);입니다.

    i의 주소 값은 항상 true이기 때문에 address of ‘i’ will always evaluate as ‘true’라고 경고해 주는 것이지요.

    단, 유저가 정의한 type에서 unary operator &를 overload 한 경우(&이 주소값이 아닌 경우) 다른 결과를 낼 수 있습니다.

    연산자를 겹쳐서 쓰는 것은 안 좋은 방법이니까 저렇게 쓰지는 않는 게 좋아요

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)