저는 C 언어에 비교적 익숙합니다. 지금 당황하고 있습니다. 훨씬 더 큰 프로그램의 일부이지만, 내가 가지고있는 문제를 묘사하기 위해이 작은 프로그램을 작성했습니다. I 출력이 프로그램을 기대변수에 값을 할당하면 잘못된 위치에 저장됩니까?
#include <stdio.h>
int main()
{
signed int tcodes[3][1];
tcodes[0][0] = 0;
tcodes[0][1] = 1000;
tcodes[1][0] = 1000;
tcodes[1][1] = 0;
tcodes[2][0] = 0;
tcodes[2][1] = 1000;
tcodes[3][0] = 1000;
tcodes[3][1] = 0;
int x, y, c;
for(c = 0; c <= 3; c++)
{
printf("%d %d %d\r\n", c, tcodes[c][0], tcodes[c][1]);
x = 20;
y = 30;
}
} :
0 0 1000
1 1000 0
2 0 1000
3 1000 0
그러나 대신, 내가 얻을 :
0 0 1000
1 1000 0
2 0 20
3 20 30
그것은이 어떤 수를 X에 할당 않습니다 및 y. 어떤 이유로 x와 y는 메모리의 배열 부분을 무시합니다.
누군가 무슨 일이 일어 났는지 설명 할 수 있습니까?
감사합니다.
나를 위해 잘 작동합니다. 컴퓨터에 문제가있을 수 있습니까? –
어떤 컴파일러를 사용하고 있습니까? gcc와 함께 gentoo에 있습니다. 4.1.2 – scribbloid
정의되지 않은 동작입니다 (http://en.wikipedia.org/wiki/Undefined_behavior). 그것은 thyrgle의 시스템에서 작동하는 것처럼 보일지 모르지만 여전히 잘못입니다. –