#include <stdio.h>
int main()
{
FILE* fp;
int i,j,s;
int l[3];
fp = fopen(\"INPUT.TXT\",\"r\");
if (fp == NULL)
{
return -1;
}
s=0;
for (i=0; i<4; i++)
{
fscanf(fp,\"%d %d %d %d\",&l[0],&l[1],&l[2],&l[3]);
j = (l[2] - l[0]) * (l[3]-l[1]);
printf(\"%d\\n\",j);
s = s + j;
printf(\"%d\\n\\n\",s);
}
printf(\"%d\\n\",s);
fclose(fp);
return 0;
}
요렇게 짜놓고 텍스트파일에
1 3 5 7
2 4 6 8
3 5 7 9
4 6 8 10
요렇게 쳐넣었어요
그러면 한행마다 for문에서 계산되서 j에 16이 나오거덩요?
근데 s값을 for문 바로 위에서 0으로 초기화해놨는데
첫 루프를 돌면서 값이 23이 나오는거에요 16도 아니고 +7이 된 23이 말이죠..
또 이상한건 한루프 돌땐 +1 씩 된다는거 16씩 더해져야 되는건데
제가 예측한 값은 s = 0+16+16+16+16 과정을 거쳐 64 가 나오는건데
어디가 잘못된거에요?
ㅇㅇㅇ
프린트문으로 l0 l1 l2 l3 각각 출력하니까 다 나오던데요? l[3]으로 하면 0~3까지 4개 나오는거 아네요?
int l[3] 이라고 선언했잖니. 그럼 배열의 원소가 0, 1, 2 이렇게 세 개 잡히는거야. 그런데 l[3]에다 뭘 넣었잖아. 그럼 어떻게 되겠어? 배열의 공간을 넘어가서, 그 다음 메모리를 침범하는거야. 그래서 알 수 없는 결과가 나오는거지.