F.R.I.D.A.Y.

VS ERROR C6293 : for 루프가 잘못 정의되었습니다. 최소값부터 아래로 계산됩니다. 본문

DEV/Tip

VS ERROR C6293 : for 루프가 잘못 정의되었습니다. 최소값부터 아래로 계산됩니다.

F.R.I.D.A.Y. 2019. 4. 28. 00:09
반응형

C6292와 쌍을 이루는 경고입니다. 이 포스트에서는 C6293 경고를 살펴봅니다.


원인. 조건식에 맞지 않는 증감식

 원인이 되었던 코드는 다음과 같습니다.

	for (int i = 0; i < 100; --i) {

	}

 코드상 i값이 커져야 하나 계속해서 감소하고 있습니다. 언더플로우가 발생해 i가 100 보다 커지지 않으면 무한 루프가 돌겠군요.


해결1. 증감식 수정

 증감식을 수정하거나 조건식을 수정하는 것으로 문제를 해결할 수 있습니다만, 조건식에 맞추어 코드를 만드니 증감식을 수정하는 게 더 좋아 보이군요.

	for (int i = 0; i < 100; ++i) {

	}

 코드에 맞게 증감식을 수정해주었습니다.


해결2. 조건식 수정

 증감식을 두고 초기화, 조건식을 수정할 수도 있습니다.

	for (int i = 99; i >= 0; --i) {

	}

 100 이전까지 동작하니 초기화식은 99로 작성했습니다. 100번 동작해야하니 조건식은 0까지 동작하도록 >이 아니라 >=로 작성했습니다.

728x90
반응형
Comments