&&& 는 뭘 하는 건가요?

밑의 코드를 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 한 경우(&이 주소값이 아닌 경우) 다른 결과를 낼 수 있습니다.

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.