본문 바로가기

언어/C

반복문, 조건문의 조건식에 조건 연산이 아닌 할당 연산이 있는 경우

세혁이가 c 코드를 보여줬는데
while의 조건문에 조건 연산자가 아닌 할당 연산자 '='가 있다.



코드의 자세한 내용도 모르고
path_next_sep() 함수의 반환 형식은 안나와 있지만 
할당 연산자가 while문에서 어떻게 작용하는지만 알아보았다.

while의 조건문을 보면
path_next_sep() 함수로 return된 값을 char 포인터로 변환한 뒤 sep에 할당했다.

이 자체로 어떻게 true 혹은 false를 반환할까.. 어림짐작으로는 할당연산이 끝난 후 return하는 값이 있을거겠지라는 추측만 하였는데

할당 된 뒤에는 할당된 값을 뱉는다고 한다. 

무슨 얘기인가 했는데
반복문이나 조건문을 사용할 때


변수만을 가지고 조건식으로 사용하는 것 처럼



조건식에 할당연산자를 이요한 연산내용이 있을 때에도 l-value에 할당된 값을 return해주는 것이었다.


그래서 맨 위 코드를 다시보면...
처음 sep 주소에 위치한 값들을 반환하고 => 0을 제외한 값은 모두 true이기 때문에 반복
while문 내부에 있는 후위연산자로 계속 넘어가다가
c의 경우 문자열의 끝에 도달하면  '\0'이라는 값을 가리키게 되는데 '\0'은 NULL을 뜻하고 10진수로 0이다.
따라서 false 
while 벗어나게됨.


참조 페이지: