c, c++ 코드에 대한 설명을 부탁드립니다.

익명 사용자의 이미지

================================================================

char *str;

// ...

if (! str, "hello") // <-- 이 부분입니다.
{
// ...
}

// ...

================================================================

이 부분이 이해가 가질 않습니다.
어떤 의미를 가지는지 설명 부탁드립다.

익명 사용자의 이미지

흠냐흠냐..
if (! str, "hello")
{
}

라는 코드가 가능한가? --;;
이건 문법적으로 불가능한 것 같은데..
혹시 이 코드의 실수 아닐까 싶네요
if ( !strcmp(str, "hello"))
{
}

if ( statement )
인데.. 위의 (!str, "hello")는 두개의 statement 인것 같은데..

암튼, 제가 보기엔 잘못된 코드 입니다.
다른 고수님들의 의견은 어떨지 궁금하네요. ^^
(저역시 초보이기 때문에..)

좋은 현충일 보내세요~ ^^

익명 사용자의 이미지

논리적으로 쓸데없는 코드이지만 문법적으로 문제없습니다.

쉼표연산자는 ','를 기준으로

왼쪽 expression을 먼저 실행하고 오른쪽 expression을 실행한 후 오른쪽
expression의 결과값을 반환하는 연산자입니다.

즉 !str을 evaluate한 후 (결과값은 str값에 따라 좌우되겠지요)

상수인 "hello"를 evaluate할텐데

"hello"를 가리키는 포인터값은 절대 0이 아닐테므로 "hello"의 결과는

반드시 0이 아니므로

전체 if절은 항상 참이 되게 됩니다.