묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
구문에 대한 마지막 질문이기를 바라며...-_-;
2003.01.22 22:13
질문1)
몇 일 전에 아래의 소스를 제시하고, 1번 소스는 정상실행이 되는데,
2번소스는 왜 무한루프가 걸리는지를 질문했었어요.
그 때의 소스를 보여드리자면,...
<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행 ?>
물론 여러분들은 알고 계시겠지만, 제가 알아낸 사항은 바로...~
while, for, if 등과 같은 조건식내에 있는 변수는 일반적인 변수와 같은
"정적변수"의 특성을 가지고 있고,
while, for, if 구문의 중괄호{} 안에 있는 변수들은 function xxx(){}와
같이 함수의 중괄호{}내에 있는 변수와 같이 한 번 실행되면, 사라지는
특성을 지닌 변수이다.
라는 것을 알아냈는데, 이와 관련된 사항을 말씀드리자면...
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행 ?>
이 소스내용 중에 3행의 $a=70; 앞에 static을 붙이면, 무한루프가 안 걸리고,
정상적으로 값이 70~80까지 출력이 된다는 거죠^^
그리고, 위의 소스를 함수로 표현해봤는데요,...
1행 <?
2행 function sum(){
3행 $a=70;
4행 echo $a."<br>";
5행 $a++;
6행 }
7행 sum():
8행 sum():
9행 sum():
10행 sum():
11행 sum():
12행 sum():
13행 sum():
14행 sum():
15행 sum():
16행 sum():
17행 sum():
18행 ?>
이와 같이 코딩을 했다면, 70이라는 값이 11번 출력되었겠지만, 만약 3행의
$a=70; 앞에 static을 붙이게 되면 70~80까지 출력이 되더라구요~^^
그래서...
while, for, if 구문의 중괄호{} 안에 있는 변수들은 function xxx(){}와
같이 함수의 중괄호{}내에 있는 변수와 같이 한 번 실행되면, 사라지는
특성을 지닌 변수이다.
라는 결론이 나더라구요...맞나요??
질문2)
제가 보고 있는 책에는 static 선언자는 오직 함수내에서만 사용된다고
나왔는데, 위에서 제가 설명한 것 처럼 구문내에서도 사용하는 것이
정상적인 방법인가요??
몇 일 전에 아래의 소스를 제시하고, 1번 소스는 정상실행이 되는데,
2번소스는 왜 무한루프가 걸리는지를 질문했었어요.
그 때의 소스를 보여드리자면,...
<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행 ?>
물론 여러분들은 알고 계시겠지만, 제가 알아낸 사항은 바로...~
while, for, if 등과 같은 조건식내에 있는 변수는 일반적인 변수와 같은
"정적변수"의 특성을 가지고 있고,
while, for, if 구문의 중괄호{} 안에 있는 변수들은 function xxx(){}와
같이 함수의 중괄호{}내에 있는 변수와 같이 한 번 실행되면, 사라지는
특성을 지닌 변수이다.
라는 것을 알아냈는데, 이와 관련된 사항을 말씀드리자면...
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행 ?>
이 소스내용 중에 3행의 $a=70; 앞에 static을 붙이면, 무한루프가 안 걸리고,
정상적으로 값이 70~80까지 출력이 된다는 거죠^^
그리고, 위의 소스를 함수로 표현해봤는데요,...
1행 <?
2행 function sum(){
3행 $a=70;
4행 echo $a."<br>";
5행 $a++;
6행 }
7행 sum():
8행 sum():
9행 sum():
10행 sum():
11행 sum():
12행 sum():
13행 sum():
14행 sum():
15행 sum():
16행 sum():
17행 sum():
18행 ?>
이와 같이 코딩을 했다면, 70이라는 값이 11번 출력되었겠지만, 만약 3행의
$a=70; 앞에 static을 붙이게 되면 70~80까지 출력이 되더라구요~^^
그래서...
while, for, if 구문의 중괄호{} 안에 있는 변수들은 function xxx(){}와
같이 함수의 중괄호{}내에 있는 변수와 같이 한 번 실행되면, 사라지는
특성을 지닌 변수이다.
라는 결론이 나더라구요...맞나요??
질문2)
제가 보고 있는 책에는 static 선언자는 오직 함수내에서만 사용된다고
나왔는데, 위에서 제가 설명한 것 처럼 구문내에서도 사용하는 것이
정상적인 방법인가요??