2013-01-03 1 views
0

에 포인터를 비교?나는 C에서이 일을 작성하는 노력 문자

+3

이 오류는 운영자에게'! ='이 아니라'=! '로 표시합니다. – sean

+0

전체 코드를 게시하십시오. 여기에는 많은 함정이 있습니다. – moooeeeep

+0

나는 당신이''\ 0 ''대신''\ 0' '을 의미했다고 믿는다. 따옴표를 참고하십시오. 첫 번째는 문자열이고 두 번째는 단일 문자입니다. 또한 첫 번째 코드와 두 번째 코드가 다릅니다. – Jack

답변

7

C에서의 비교는 == 연산자를 사용합니다. 단 하나의 =은 과제입니다. 그 외에도 정수에 대한 포인터를 비교하려고합니다.

그 표현에서
(*(result+1))=!"\0" 

, !"\0"0 동일하므로 코드는 일을 정말입니다 : 당신이 코드는

(*(result+1))=0 

그리고 당신이 원하는 아마 아니다. 그것은 "내가이 표현식을 쓰려고합니다"라는 예와 거기에있는 것과 일치하지 않는지 확인하십시오. 당신이하려고하는 것은 다음과 같다고 생각합니다 :

(*(result+1)) != '\0' 

"같지 않음"연산자 사용. 대신에 =!로 작성한 것 같습니다. 아마도 오타 일뿐입니다. 표현식을 수정하기 위해 큰 따옴표를 작은 따옴표로 변경했습니다.

편집자 참고 - 운영자가 전혀 필요하지 않습니다. 귀하의 표현식은 다음과 같습니다.

*(result + 1) 

그러면 문제가 생길 수 있습니다.

+0

다른 단어, "문제가 아닌가요?" ? –

+0

OP가 무엇을 원하는지 어떻게 알 수 있습니까? – moooeeeep

+0

@moooeeeep, educated guess. 그는 자신의 질문에 바로 쓰려고 노력하고 있다고 말했다. –

1

실제로 비교가 아닌 과제를 수행하려면 = 대신 ==이 필요합니다. 그것이 가능한 할당 메시지를받는 이유입니다.

+0

_expr1! = expr2_이 (가) 할당이 아닙니다. – varevarao

+0

@varervarao - 누군가가 질문을 편집하고 OP의 의도를 엉망으로 만들었습니다. 문어체 그라버스는 그가 대답했을 당시의 문맥을 감안할 때 합리적인 대답을한다고 생각합니다. –

+0

@ CarlNorum이 말했듯이 나는 그 질문에서 본 것에 기초하여 대답했다. 그것은 나에게 배정 된 것처럼 보이지만, 반대의'! ='연산자는 아닙니다. – octopusgrabbus

관련 문제