Q&A

  • C언어 인데요....( 간단합니다)
안녕하십니까?

델 여러분!~!~!

다름이 아니라 간단한 C 언어 소스인데 무슨뜻인지 모르겠어요.

해석좀 부탁드립니다.



for (i=0;i<256;i++){



for (j=0;j<256;j++){



histo [(int)m_open[i][j]]++ ;

}

}



참고로 histo와 m_open은 배열입니다.

감사합니다. 부탁드릴요





1  COMMENTS
  • Profile
    이재식 2000.02.26 08:14
    민석이 wrote:

    > 안녕하십니까?

    > 델 여러분!~!~!

    > 다름이 아니라 간단한 C 언어 소스인데 무슨뜻인지 모르겠어요.

    > 해석좀 부탁드립니다.

    >

    > for (i=0;i<256;i++){

    >

    > for (j=0;j<256;j++){

    >

    > histo [(int)m_open[i][j]]++ ;

    > }

    > }

    >

    > 참고로 histo와 m_open은 배열입니다.



    이재식 Wrote :

    안녕하세요?



    우선 m_open은 2차 배열로 선언되어있을 것입니다.

    가령, 이렇게 말이죠. int m_open [255][255] ;

    그런데, 위에서보면, (int)형으로 형변환을 하였습니다.

    즉, m_open은 사실상 int형이 아닌 어떤 다른 형인데 이것을

    (int)형으로변환을 한거죠. 가장 중요한것은 과연 m_open배열에

    어떤 유형의 데이터가 있는지 위에서는 설명이 없어서

    특별히, 왜 저렇게 형변환을 해야만 했는지 이유를 알수가 없네요.

    histo는 1차 배열이겠죠.

    이것의 크기는 사실상 위의 소스만 가지고는 알 수 없습니다.

    왜냐하면, 이 histo의 크기를 알려면 위에서 언급했듯

    m_open의 데이터 유형을 알아야 하니까요.

    그리고, 아래부분.

    histo [(int)m_open[i][j]]++ ;

    이것은 이렇게 표현할 수있습니다.

    histo [(int)m_open[i][j]] = histo [(int)m_open[i][j]] + 1 ;



    즉, 델파이로 한다면 Inc함수와 같은 것입니다.



    즉, 위 소스는 255안에 255번 돌면서 histo의 값을 1씩 증가시키는 루틴이

    되겠습니다.



    그런데, 보니까, m_open float내지 char형이 분명하네요.

    즉, 가령 m_open[0][0]방에 실수값 1.2가 있다면

    그리고 처음 루프에 들어올때는(i, j 가 모두 0)

    int(m_open[0][0])의 값은 1이 되겠죠. int형으로 형변환을 했으니까요.

    그럼 histo[1]++ 가 되겟죠.

    즉, histo[1] = histo[1] + 1

    이렇게 되는 것입니다.