컴파일러가 아니라 C 와 C++ 의 차이입니다.
C++ : for(;;) 안에 지역 변수선언이 가능
C : for(;;) 안에 지역 변수선언이 불가능
참고로 C 의 경우 로컬변수의 경우 함수가 시작하자마자 선언을 꼭 해야 되는데 C++ 은 이 귀찮은 점을 해결한거죠..
님이 컴파일하다가 에러가 나는 경우는 C++ 로 컴파일을 하셔야 되는데 C로 컴파일을 해서 에러로 뜬 것입니다.
1. 터보C 의 경우 C++ 컴파일러가 아니라 C 컴파일러이므로 당연히 에러가 납니다.
2. VC 로 컴파일하셨는데 에러가 났다면 확장자를 .cpp 로 변경시키거나
환경설정에서 C++ 로 컴파일하게 하시면 될겁니다.
3. Borland C 도 2. 과 마찬가지 경우일거라 생각됩니다.
앙탈쟁이 님이 쓰신 글 :
: #include<stdio.h>
: #include<conio.h>
: void main()
: {
: int su[5],max=0;
: clrscr();
:
: for (int a=0;a<5 ; a++)
: {
: printf("%d 번째수를 입력",a+1);
: scanf("%d",&su[a]);
: printf("su[%d]에 %d가 입력되었습니다\n",a,su[a]);
: }
:
: for (int a=0;a<5 ;a++ )
: {
: if (max<su[a])
: max = su[a];
: }
:
: printf("\n입력된 값중 최대값은 %d 입니다.",max);
: }
:
: 여기 구문에서 보면 두번째 for문에서 a값의 자료형을 또 한번(첫번째 for문에서 이미1번 선언했으므로) 선언하는데
: 제가 에디트 플러스에 볼랜드 5.5를 연동해서 하고 있는데 저렇게 하면 실행이 되는데 다른
: 터보C나 비쥬얼C에서는 저렇게 두번 선언을 하면 오류가 나오더군요. 한번만 선언해야 잘되구요
: 컴파일러의 차이인가요?
: C는 그럼 컴파일에 따라서 구문의 방식이 조금씩 다른건가요?
: 아시는 분은 답변을 부탁드립니다.
|