Na czym polega różnica między if, a else if?

0

Na czym polega różnica między if, a else if?
Teraz program liczy poprawnie.

 
#include <stdio.h>
int main(int argc, char **argv)
{
        int A[4][5];
        int i, j, suma;
 
        for(i=0; i<4; i++)
                for(j=0; j<5; j++)
                {
                        printf("Podaj element (%d, %d) macierzy A: ", i, j);
                        scanf("%d", &A[i][j]);
                }
 
        for(i=0; i<4; i++)
        {
                for(j=0; j<5; j++)
                {
                        printf("%d  ", A[i][j]);
                }
                printf("\n");
        }
 
        for(i=0; i<4; i++)
        {
                for(j=0; j<5; j++)
                {        
                        suma = 0;
 
                        if(i>0)
                                suma+= A[i-1][j];
                        if(i<3)
                                suma+=A[i+1][j];
                        if(j>0)
                                suma+=A[i][j-1];
                        if(j<4)
                                suma+=A[i][j+1];
 
                        printf("suma sasiednich elementow elementu (%d, %d) = %d\n", i, j, suma);
                }                
        }
 
        return 0;
 
}

Teraz mała zmiana:

        for(i=0; i<4; i++)
        {
                for(j=0; j<5; j++)
                {        
                        suma = 0;
 
                        if(i>0)
                                suma+= A[i-1][j];
                       else if(i<3)
                                suma+=A[i+1][j];
                       else if(j>0)
                                suma+=A[i][j-1];
                       else if(j<4)
                                suma+=A[i][j+1];
 
                        printf("suma sasiednich elementow elementu (%d, %d) = %d\n", i, j, suma);
                }                
        }
 

Dlaczego, bo takiej zmianie program podaje inne wyniki niż powinien? Na czym polega różnica?

0

FACEPALM. Kurde masz dostęp do Internetu to z niego korzystaj! W pierwszym lepszym tutorialu o tym przeczytasz. Jeżeli użyjesz if else if else if... jest traktowane jak jeden blok instrukcji warunkowej. Jeżeli jeden if się spełni reszta nie jest już sprawdzana. W pierwszym przypadku każdy if jest sprawdzany i mogą się spełnić dwa na przykład.

1 użytkowników online, w tym zalogowanych: 0, gości: 1