for 문 비교구문 질문 (for문 안으로 들어가지 않는 문제)
Visual Studio2010에서 빈프로젝트 하나 생성하고 cpp 파일 하나만 생성 후 하기 작업 시에 (1), (2)번에서 에러가 발생합니다.
#include
void main() {
// error
unsigned int vaR = 1;
for (int off1 = -2*vaR;off1<=2*vaR; ++off1){ //for 문 안으로 안들어감 (1)
printf("%d\n", vaR);
}
// error
vaR = 2;
for (int off1 = -vaR;off1<=vaR; ++off1){ //for 문 안으로 안들어감 (2)
printf("%d\n", vaR);
}
// okay
vaR = 3;
for (int off1 = 0;off1<=vaR; ++off1){ //for 문 안으로 들어감 (3)
printf("%d\n", vaR);
}
// okay
vaR = 4;
for (int off1 = -vaR;off1<=0; ++off1){ //for 문 안으로 들어감 (4)
printf("%d\n", vaR);
}
// okay
int val = 5;
for (int off1 = -val;off1<=val; ++off1){ //for 문 안으로 들어감 (5)
printf("%d\n", val);
}
}
위 코드에서 (1), (2)번에서 for문으로 들어가지 않는 이유를 모르겠습니다.
(3), (4), (5)와 같이 사용하면 되겠지만 (1), (2)의 에러 케이스의 이유를 정확히 알려주세요..
타인이 코딩한 프로젝트에 제가 추가하는 경우 기존 변수를 사용하다가 (1), (2)와 같은 경우가 발생해서 애먹었네요..
이유 좀 알려주세요.
저도 모르겠네요.
별도로 해보니. 그런 문제가 발생하지 않았습니다.
- 별도로 만들어보거나.
- 한줄씩 지워서 테스트 하는 방법이 있습니다.
배열에 범위를 넘는 값을 입력하면. if()문도 뛰어넘는 오류가 발생하기도 하니 주의하시기 바랍니다.
try catch 를 사용하거나.
메모리 릭을 확인하시기 바랍니다.
크기는 4로 똑같이 나옵니다.
혹시. Val 를 전역변수로 지정한 걸지도 모르죠...
Val 에 데이터값을 출력해보세요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
unsigned int vaR = 1;
DevC++ 로 확인해본 결과.
unsigned int vaR = 1; -----> int vaR = 1; 로 수정.
- 마이너스값을 처리하려면. unsigned 를 빼셔야 합니다.
- (int) 명시적 형변환을 해줘도 되기는 하네요. 하지만. 값이 맞는지 모르겠습니다. 위험하겠죠.??
vaR = 2;
printf("%d\n",(int)-vaR); //-2가 나옵니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
의견
Windows:
Visual Studio Compiler, ideone.com
Linux: (Ubuntu 12.04 LTS)
gcc 4.6.2
제가 테스트해본 위 환경에서는 문제없이 TEST가 잘 출력됩니다.
어떤 환경에서 빌드하시고 실행하셨는지 말씀해주셔야 할 것 같아요.
저는 이렇게 생각했습니다.
댓글 달기