error C2106: '=' : 왼쪽 피연산자는 l-value이어야 합니다.

621hjmit의 이미지

void linklist::del(int num){  //num에 넘겨주는 수는 2
	int data=0;
	node *search=ptnode;
	while(num != data||search=NULL){  //★★★★★★★★★<-- 여기서 에러..
		data=search->data;
		cout<<"data=search->data;   ==>>  "<<data<<endl;
		search=search->link;
	}
	cout<<endl<<"[delete "<<data<<"]"<<endl;
}

error C2106: '=' : 왼쪽 피연산자는 l-value이어야 합니다.

참나.. 이게 왜 에러예요?!!

dg의 이미지

= 연산자의 우선순위가 ||나 != 보다 낮기 때문에
num != data||search=NULL 에서
= 연산자의 왼쪽 피연산자가 num != data||search 이고
이것은 l-value가 아니므로 에러 맞는데요.

621hjmit의 이미지

연산자 우선순위..
당연히 제 생각 대로 될 줄 알았었어요.
제 생각이 정상과 벗어났꾼요~
괄호 하니 되네요~
감사 합니당~
꺄~!!ㅋㅋㅋㅋ

♡ ♡ ♡ ♡ ♡ ♡ ♡ ♡ ♡ 하트 백만개 드려용!

dg의 이미지

그런데 괄호문제가 아니라 ==를 =로 잘못 쓴거 아닌가요?

hugeval의 이미지

..

621hjmit의 이미지

괄호문도 문제있고 비교연산에도 문제가 있었죠/./
(num != data||search=NULL){ 를
((num != data)&&(search==NULL)){ 이렇게 고쳤드랬죠 ㅋㅋㅋ
네네 잘돌아 갑니당.ㅋㅋ

dg의 이미지

(num != data)&&(search==NULL) 랑
num != data && search == NULL
는 같습니다.

비교연산자(==, !=, <)는 논리연산자(&&, ||) 보다 우선순위가 높고
대입연산자는 콤마연산자를 제외하고 제일 우선순위가 낮습니다.
그러니 ==를 =로 잘못 쓰지 않았다면 괄호문제도 없었겠죠.

621hjmit의 이미지

그렇쿤요...

621hjmit의 이미지

그렇쿤요...

621hjmit의 이미지

그렇쿤요...

621hjmit의 이미지

그렇쿤요...

dolzzo의 이미지

(num != data)&&(search!=NULL) 이 맞는 거 같습니다만..