for 문에 대한 기초적인 질문입니다.

nayana의 이미지

      1 #include <iostream>
      2
      3 using std::cout;
      4 using std::cin;
      5 using std::endl;
      6
      7 int main( void )
      8 {
      9     int i, j, m, k;
     10     char abc[ 3 ][ 3 ]= { "ab", "bc", "cd" };
     11
     12     for ( i = 0; i < 3; ++i )
     13     {
     14         for ( j = 0; j < 3; ++j )
     15         {
     16             for ( m = i, k = j; k < ( i + 5 ), m < ( j + 5 ); ++m, ++k )
     17                 cout << abc[ i ][ j ] << endl;
     18         }
     19     }
     20
     21     return 0;
     22 }

다음과 같은 warning 떨어집니다.

a.cpp: In function `int main()':
a.cpp:16: warning: left-hand operand of comma expression has no effect

for문에 떨어지는데 ...이상하네요!!

cleol의 이미지

k < ( i + 5 ), m < ( j + 5)

k < ( i + 5 ) && m < ( j + 5)

로 바뀌어야 하지 않을까요? 의도는 아래 코드일거 같은데...

처음 코드처럼 쓰면 m < ( j + 5) 의 값만 for 루프에 영향을 미칩니다. 콤마 왼쪽의 k < ( i + 5 ) 는 아무 역할도 하지 않습니다. 참고로 a, b 같은 표현의 값은 b 입니다.