[resolvido] Matriz em C imprimindo valor inesperado

galera, tenho uma matriz em C e estou criando um loop para imprimir todos os elementos dela. O problema, é que os valores que eu imprimo não correspondem ao valor que eu armazenei na matriz. Vejam:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

int main(void) {
	int matriz[2][2], i, j;
	matriz[0][0] = 5;
	matriz[0][1] = 10;
	matriz[0][2] = 15; // esse indice é imprimido com o valor 20
	matriz[1][0] = 20;
	matriz[1][1] = 25;
	matriz[1][2] = 30;
	matriz[2][0] = 35;
	matriz[2][1] = 40;
	matriz[2][2] = 45;

	//for(i = 0; i <= 2; i++) {
	//printf("%d\n", matriz[0][i]);
		printf("%d\n", matriz[0][0]);
		printf("%d\n", matriz[0][1]);
		printf("%d\n", matriz[0][2]); // Deveria imprimir 15, mas imprime 20

	//}

	return 0;
}

O que há de errado?

Em C, se você quer definir uma matriz 3 x 3 (que é o seu caso), você precisa escrever:

int matriz[3][3];

O índice pode ser 0, 1 ou 2.

Do jeito que você fez, criou uma matriz 2 por 2, e ao usar matriz[0][2], acessou um elemento fora da matriz.

Concordo com entanglement.
C e java são linguagens de base 0 (zero), tudo inicia com 0.

Veja:

int matriz[2];// inteiro de duas posicoes, que sao indexadas por 0 e 1 somente

matriz[0] = 1; // primeira posicao
matriz[1] = 2;// segunda posicao

[quote=entanglement]Em C, se você quer definir uma matriz 3 x 3 (que é o seu caso), você precisa escrever:

int matriz[3][3];

O índice pode ser 0, 1 ou 2.

Do jeito que você fez, criou uma matriz 2 por 2, e ao usar matriz[0][2], acessou um elemento fora da matriz. [/quote]

Obrigado, foi descuido da minha parte! :roll: