none
반복문에서서 조건식을 여러개쓰는 경우는 어떻게 되나요? RRS feed

  • 질문

  • 예를 들어

    for(int i=0;i>3,i<3;i++){

    cout<<"print"<<endl;

    }

    int i=0;

    while(i>3,i<3){

    cout<<"print"<<endl;

    }

    의 경우 컴파일에러는 안나지만 뒤의 조건식만 유효합니다.

    여기서 ","의 의미가 어떻게 되나요?


    • 편집됨 kim deoksu 2013년 5월 15일 수요일 오전 7:05
    2013년 5월 15일 수요일 오전 7:05

답변

  • , 는 순차실행의 의미입니다. 반복의 조건을 판단하는 부분이나 조건문의 조건을 판단하는 부분에 , 를 찍어

    표현식을 나열하면 컴파일러는 순작적인 작업을 나열한것으로 판단합니다. 따라서

     

    while(i>3, i <3)

     

    라고 했을때 앞에것도 처리하고 뒤에것도 처리하지만 조건을 판단하는 수식들은 마지막에 수행한 조건만

    인정하기 때문에 i > 3 는 의미가 없는것처럼 보이는 것입니다.

    이해를 돕기위해 예를 조금 바꾸어 보면

     

    while(i++, i <3)

     

    이렇게 해보시면 i 값이 1증가한후에 i < 3 을 비교할것입니다. C/C++ 에서 문장을 나눌때 ; 을

    사용하게 되는데 이것을 사용해서 문장을 구분하면 while문이나 if문이 오류가 나기 때문에

    , 를 이용해서 문장을 군분시켜서 표현하는 방법도 제공하는 것이며 ; 처럼 순차 실행해줍니다.

    하지만 조건의 판단은 가장 마지막에 사용한 수식의 진리값으로 처리됩니다.

     

    while(i++, i++, i <3)

     

    라고 하시면 i가 2 증가하고 i < 3 비교를 처리할 것입니다.

    2013년 5월 31일 금요일 오후 12:47
    중재자

모든 응답

  • 아래 예문의 경우 j가 0이 아닐때까지 반복되어집니다. 즉 위에서는 i가 3보다 작은 경우에 while을 벚어나게 되어집니다.

    int j=10;  
    int i=0;  
    while( ++i, --j)  
    {  
     /*..repeat as long as j is not 0*/  
    }

    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    2013년 5월 16일 목요일 오전 3:24
    중재자
  • , 는 순차실행의 의미입니다. 반복의 조건을 판단하는 부분이나 조건문의 조건을 판단하는 부분에 , 를 찍어

    표현식을 나열하면 컴파일러는 순작적인 작업을 나열한것으로 판단합니다. 따라서

     

    while(i>3, i <3)

     

    라고 했을때 앞에것도 처리하고 뒤에것도 처리하지만 조건을 판단하는 수식들은 마지막에 수행한 조건만

    인정하기 때문에 i > 3 는 의미가 없는것처럼 보이는 것입니다.

    이해를 돕기위해 예를 조금 바꾸어 보면

     

    while(i++, i <3)

     

    이렇게 해보시면 i 값이 1증가한후에 i < 3 을 비교할것입니다. C/C++ 에서 문장을 나눌때 ; 을

    사용하게 되는데 이것을 사용해서 문장을 구분하면 while문이나 if문이 오류가 나기 때문에

    , 를 이용해서 문장을 군분시켜서 표현하는 방법도 제공하는 것이며 ; 처럼 순차 실행해줍니다.

    하지만 조건의 판단은 가장 마지막에 사용한 수식의 진리값으로 처리됩니다.

     

    while(i++, i++, i <3)

     

    라고 하시면 i가 2 증가하고 i < 3 비교를 처리할 것입니다.

    2013년 5월 31일 금요일 오후 12:47
    중재자