묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[다시 질문 ^^;] while구문에 대한 질문여...
2003.01.21 18:26
아래와 같이 코딩했을 때 두 개의 소스가 왜 서로다른 결과가 나오는 것인지에 대한
질문을 올렸었습니다.
소스는...
<1번소스>
1행 <?
2행 $a=70;
3행 while($a<=80){
4행 if($a<=80){
5행 echo $a."<br>";
6행 $a++;
7행 }
8행 else{
9행 break;
10행 }
11행 }
12행 ?>
<2번소스>
1행 <?
2행 while($a<=80){
3행 $a=70;
4행 if($a<=80){
5행 echo $a."<br>";
6행 $a++;
7행 }
8행 else{
9행 break;
10행 }
11행 }
12행 ?>
와 같은데요...
왜 다르게 출력되는지에 대한 답변을 ...
1번소스는 70~80까지 정상적으로 출력이되고,
2번소스는 70만 계속 반복되는 무한루프로 출력된다
라는 답변을 해주시더라구요, 물론 구체적으로 친절히 설명과 함께 답변을 해주셨는데,
제가 정말 궁금한 사항은
1번소스의 경우에 6행의 $a++; 라는 증가식에 의해서 3행의 $a값이 1씩 증가하여(물론 2행이 $a값도 증가하는것이 맞겠죠?) 3행의
$a값을 4행의 $a에서도 그대로 할당받아서 출력되는 값이 70 부터 80까지 출력되는 되는
거잖아요...
마찬가지로 2번소스의 6행에서 $a++; 라는 증가식에 의해 증가된 값이 2행 $a에 저장되어
3행과 4행의 $a에서도 그대로 할당받아 70부터 80까지 출력되는 걸로 생각이 되거든요..
그런데, 왜 2번소스의 6행의 $a++; 증가식에 의해 3행의 $a의 값은 71,72,73...이렇게
값이 증가되지 않고, 무한루프가 되는건가요??
원래 구문내에서 연산된 변수 값은 "변수=변수값" 형식에는 영향을 안주는 것인가요??
질문을 올렸었습니다.
소스는...
<1번소스>
1행 <?
2행 $a=70;
3행 while($a<=80){
4행 if($a<=80){
5행 echo $a."<br>";
6행 $a++;
7행 }
8행 else{
9행 break;
10행 }
11행 }
12행 ?>
<2번소스>
1행 <?
2행 while($a<=80){
3행 $a=70;
4행 if($a<=80){
5행 echo $a."<br>";
6행 $a++;
7행 }
8행 else{
9행 break;
10행 }
11행 }
12행 ?>
와 같은데요...
왜 다르게 출력되는지에 대한 답변을 ...
1번소스는 70~80까지 정상적으로 출력이되고,
2번소스는 70만 계속 반복되는 무한루프로 출력된다
라는 답변을 해주시더라구요, 물론 구체적으로 친절히 설명과 함께 답변을 해주셨는데,
제가 정말 궁금한 사항은
1번소스의 경우에 6행의 $a++; 라는 증가식에 의해서 3행의 $a값이 1씩 증가하여(물론 2행이 $a값도 증가하는것이 맞겠죠?) 3행의
$a값을 4행의 $a에서도 그대로 할당받아서 출력되는 값이 70 부터 80까지 출력되는 되는
거잖아요...
마찬가지로 2번소스의 6행에서 $a++; 라는 증가식에 의해 증가된 값이 2행 $a에 저장되어
3행과 4행의 $a에서도 그대로 할당받아 70부터 80까지 출력되는 걸로 생각이 되거든요..
그런데, 왜 2번소스의 6행의 $a++; 증가식에 의해 3행의 $a의 값은 71,72,73...이렇게
값이 증가되지 않고, 무한루프가 되는건가요??
원래 구문내에서 연산된 변수 값은 "변수=변수값" 형식에는 영향을 안주는 것인가요??
댓글 4
-
야호미
2003.01.21 19:29
-
행복한고니
2003.01.21 19:32
두번째에는
계속 루프를 도는 중간에
$a 값을 70이라고 자꾸 초기화 시켜주잖아요. -_-;; -
야호미
2003.01.21 19:32
답변이 잘못 되거 같은 생각이 @.@;; -
허진규
2003.01.22 06:34
2번경우에 a=70 이니까 ㅡㅡ; 80보다 작으니 무조껀 반복
71 이 되 어따가 3 행가면 어라 다시 70 이내
하고 80보다 작네
6행가서 어라 +1 해주지
다시 3행가서 어라또 70 이야?
80보다 작네 일케 되는거구
1번째꺼는
while 이 시작하기 전에 70 이라고 선언되어 이땀니다..
간단히 위에서 아래로 실행된다고 생각하세요.
윗부분부터 아래쪽으로 읽어가면서 순서대로 명령을 실행한다고 ^ ^
while 문때문에 11 행에서 while 이시작하는 2,3 번 행으로 다시 되돌아 가는것입니다.
2번 경우에는 2행으로 돌아가서 3행의 a=70 값을 가져오지만
1번경우에는 3행으로 돌아가서 설정된 a 의 값을 다시 가져 오지 않습니다..
그니까 a++ 된값을 가져오게 되는거죠..
이해하심 상단히 쉬운문제인대..
$a 라는 값은 없는데 <= 80 을 하다면 제대로 되지 않을거 같네요..
저두 아직 배우는 중이나 제대로 답변 되나..