... 베오베 게시판만 보다가 메인화면에서 for문 질문이 올라온 걸 보고 부랴부랴 가입했네요! <img src="http://www.todayhumor.co.kr/board/cheditor/icons/em/50.gif" alt="" border="0" style="width: 16px; height: 16px; margin: 1px 4px; vertical-align: middle" /> <div><br /></div> <div>올리신 코드 해설 먼저 해드릴게요. </div> <div><br /></div> <div><div style="line-height: 17.280000686645508px">#include <stdio.h></div> <div style="line-height: 17.280000686645508px">main()<br />{<br /> int a, b, c;<br /> for (a = 1, b = 1, c = 1; a <= 20, b <= 20, c <= 20; a++, b++, c++) <br /> if (c = a*a + b*b){<br /> <span style="font-size: 9pt"> </span><span style="font-size: 9pt"> printf("%d = %d^2 + %d^2", c, a, b);</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> printf("n");</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> </span><span style="font-size: 9pt">}</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> </span><span style="font-size: 9pt">else</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> </span><span style="font-size: 9pt">{</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> </span><span style="font-size: 9pt">printf("입력값 오류n");</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> </span><span style="font-size: 9pt"> </span><span style="font-size: 9pt">}</span></div> <div style="line-height: 17.280000686645508px">}</div> <div style="line-height: 17.280000686645508px"> </div> <div style="line-height: 17.280000686645508px">출력 결과</div> <div style="line-height: 17.280000686645508px">----------------------</div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">2 = 1^2 + 1^2</span></div> <div style="line-height: 17.280000686645508px">8 = 2^2 + 2^2</div> <div style="line-height: 17.280000686645508px">18 = 3^2 + 3^2</div> <div style="line-height: 17.280000686645508px">32 = 4^2 + 4^2</div> <div style="line-height: 17.280000686645508px">----------------------</div> <div style="line-height: 17.280000686645508px"><br /></div> <div style="line-height: 17.280000686645508px">이 예제에서 쓰인 for 구문에 대한 해설</div> <div style="line-height: 17.280000686645508px">for (<font color="#4f81bd"><b>a = 1, b = 1, c = 1</b></font>;<font color="#c0504d"> <b>a <= 20, b <= 20, c <= 20</b>;</font> <font color="#9bbb59"><b>a++, b++, c++</b></font>) </div> <div style="line-height: 17.280000686645508px">1. 초기화 </div> <div style="line-height: 17.280000686645508px"><b style="font-size: 9pt; color: #4f81bd">a = 1, b = 1, c = 1;</b> 초기화. 맞긴 한데..., <span style="font-size: 9pt">문제를 위한 문제이다보니 이렇게 작성하신 것 같아요. </span></div> <div style="line-height: 17.280000686645508px">이런 식으로 프로그램 작성하실 일은 아마 없을 겁니다.</div> <div style="line-height: 17.280000686645508px">말로 쓰자면 "<b>하나의 반복문 안에서 3개의 변수가 동시에 변하면서 무언가를 할거예요</b>!" 라는 거예요.</div> <div style="line-height: 17.280000686645508px">이상하지요? </div> <div style="line-height: 17.280000686645508px"><br /></div> <div style="line-height: 17.280000686645508px">2. 조건부</div> <div style="line-height: 17.280000686645508px"><b style="color: #c0504d">a <= 20, b <= 20, c <= 20;</b></div> <div style="line-height: 17.280000686645508px">조건부를 이렇게 사용하는 건 엉터리예요.</div> <div style="line-height: 17.280000686645508px">위의 조건부는 <b>마지막의 조건만 검사</b>하게 됩니다.</div> <div style="line-height: 17.280000686645508px">고쳐쓰면 위 for문의 반복 조건은 </div> <div style="line-height: 17.280000686645508px"><b style="color: #c0504d">c <= 20;</b></div> <div style="line-height: 17.280000686645508px">이렇게 되는 거죠.</div> <div style="line-height: 17.280000686645508px">그래서 <b>마지막 출력 32 = 4^2 + 4^2 에서 c가 32이므로</b></div> <div style="line-height: 17.280000686645508px"><b>위의 조건을 만족하지 않아서 프로그램이 종료됩니다. </b></div> <div style="line-height: 17.280000686645508px"><br /></div> <div style="line-height: 17.280000686645508px"> </div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">입력값 오류에 대해선 밑의 글 댓글에서 다른 분께서 설명해주셨습니다.</span></div> <div style="line-height: 17.280000686645508px">C를 포함한 많은 '프로그래밍 언어' 에서 </div> <div style="line-height: 17.280000686645508px">'=' 는 대입(assign)을,</div> <div style="line-height: 17.280000686645508px">'=='는 비교(compare)를 의미하는 연산자입니다. </div> <div style="line-height: 17.280000686645508px"><br /></div> <div style="line-height: 17.280000686645508px">그래도 입력값 오류가 안 뜨는 이유는 if(숫자)의 조건이 어떻게 처리되는지 몰라서 그런 거예요.</div> <div style="line-height: 17.280000686645508px"><br /></div> <div style="line-height: 17.280000686645508px">어떻게 배우셨는지 모르겠지만,</div> <div style="line-height: 17.280000686645508px">if(조건){</div> <div style="line-height: 17.280000686645508px"> 참인경우</div> <div style="line-height: 17.280000686645508px">}</div> <div style="line-height: 17.280000686645508px">else</div> <div style="line-height: 17.280000686645508px">{</div> <div style="line-height: 17.280000686645508px"> 거짓인경우</div> <div style="line-height: 17.280000686645508px">}</div> <div style="line-height: 17.280000686645508px"><br /></div> <div style="line-height: 17.280000686645508px">에서 <b>조건이 참이 되는 경우</b>는 <b><font color="#ff0000">"<span style="font-size: 9pt">0이 아닌 모든 수"</span></font></b><span style="font-size: 9pt">입니다.</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">if(c = a*a + b*b) 라는 구문은 두 줄로 풀어 쓰면 </span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">c = a*a + b*b;<span class="Apple-tab-span" style="white-space: pre"> </span>//우선 대입하고 </span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">if (c){<span class="Apple-tab-span" style="white-space: pre"> </span>// C의 값을 판단</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> ...</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">}</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">else</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">{</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"> ...</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt">}</span></div> <div style="line-height: 17.280000686645508px"><span style="font-size: 9pt"><br /></span></div> <div style="line-height: 17.280000686645508px">이 되는거죠. 32는 0이 아니므로 true 입니다. 그래서 값을 출력하고 끝나게 되는 거예요. </div> <div style="line-height: 17.280000686645508px"><br /></div></div> <div style="line-height: 17.280000686645508px">이거 하나만 기억하세요. </div> <div style="line-height: 17.280000686645508px">프로그램에서 </div> <div style="line-height: 17.280000686645508px">true = 1, <span style="font-size: 9pt">false = 0 이 아니라 </span></div> <div style="line-height: 17.280000686645508px"><font color="#c0504d"><b>true = 0이 아닌 모든 수, false = 0 입니다. </b></font></div> <div style="line-height: 17.280000686645508px"><font color="#c0504d"><b><br /></b></font></div> <div style="line-height: 17.280000686645508px">시험 공부하시나봅니다. 힘내세요 :) </div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.