&&& 는 뭘 하는 건가요?


밑의 코드를 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;
}
  • 2016년 01월 15일에 작성됨

조회수 216


1 답변


좋아요
0
싫어요
채택취소하기

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

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

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

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

  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close