gRoOvE 0 Denunciar post Postado Julho 15, 2008 Estava implementando um fonte aqui, e tava dando um bug que nao conseguia descobrir... char M[3][3];estava tentando comparar M[0][2] == M[0][3], ou seja, com um elemento que nao existe, essa comparação sempre retornava verdadeiro, pq isso? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Julho 15, 2008 provavelmente esse endereço na memória continha um valor que avaliado na expressão lógica retornava algo diferente de 0. Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 15, 2008 era + ou - assim: if ((M[0][1] == M[0][2]) && (M[0][2] == M[0][3]))mas tipo, o valor de M[0][2] era 5 digamos, nesse caso comparava o 5 com outro numero qualquer da memória, não faz sentido retornar verdadeiro isso "/ Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 15, 2008 Faz se o 'outro numero qualquer' for 5. E porque você está acessando a 4a coluna da matriz de 3 colunas? você está comparando com um valor aleatório na RAM. Se for 5 a comparacao vai ser verdadeira. Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Julho 16, 2008 Talvez M[1][0] seja igual a M[0][2]? Aqui no meu compilador a matriz [3][3] ali se eu tento acessar [0][3] eu acabo pegando [1][0], talvez pelo modo como a memória está organizada: #include <stdio.h> int main() { char M[3][3]; int x; for(x = 0; x<9; x++) { M[x / 3][x % 3] = x; } for(x = 0; x < 9; x++) { printf("M[%d][%d] = %d\n", x / 3, x % 3, (int)M[x / 3][x % 3]); } M[0][3] = 50; printf("\n\n"); for(x = 0; x < 9; x++) { printf("M[%d][%d] = %d\n", x / 3, x % 3, (int)M[x / 3][x % 3]); } getchar(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 16, 2008 Nao é nada absurdo.A memoria é linear.O int M[3][3] está alocando 3 pedacos de memoria de 12 bytes cada um. Então fisicamente é tudo uma linha com 36 bytes = 9 posições de 4 bytes Não é a toa que da pra usar o memset no lugar do loop p/ zerar uma matriz. Compartilhar este post Link para o post Compartilhar em outros sites