이 코드에 for문에 조건문이 없어요. 왜죠?

조회수 1068회

C++알고리즘을 C#으로 바꾸고 있는데 이런 for문을 봤습니다

for (u = b.size(), v = b.back(); u--; v = p[v]) 
b[u] = v;

C#에서는 에러가 뜨고, C++에서는 잘 돌아갑니다. 이 반복문이 뭘 하는 건지 모르겠습니다. 조건문도 없는 것 같은데 왜 실행되는 거죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    두개의 세미콜론(;) 사이에 있는 u--이 조건을 확인하는 부분입니다.

    C++의 조건문은 값을 매길 수 있는 표현은 다 수용할 수 있고, C++에 대부분의 표현은 값을 return하기 때문에 에러가 나지 않습니다.

    그 "어떤 표현"이 return하는게 주소 값이던, boolean이던, 다른 값이든 간에 조건문의 입장에서는 그냥 0이면 false이고, 아니면 true이기 때문입니다.

    이 경우에는 조건문은 u--이니 C#으로 바꾸려면 그냥 !=을 붙이세요

    for (u = b.size(), v = b.back(); u-- != 0; v = p[v]) 
        b[u] = v;
    

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.