Pytanie odnośnie znaku '0'

0

Mam taką prostą funkcję do wypisywania, który z podanych napisów będzie pierwszy w słowniku:

void porownaj(char napis1[], char napis2[])
{
    int i;
    for(i=0;(napis1[i] && napis2[i])!='0';i++){
        if(napis1[i]<napis2[i]){
            puts(napis1);
            return 0;
            }
        else if(napis1[i]==napis2[i]){
            if(napis1[i+1]==0 && napis2[i+1]==0){
                puts(napis1); // Przypadek dla takich samych wyrazow
                return 0;
            }
            else
                continue;
        }

        else{
            puts(napis2);
            return 0;
        }
    }
}

i moje pytanie dotyczy tej linijki

if(napis1[i+1]==0 && napis2[i+1]==0){

mianowicie czemu tu nie można użyć '0', tylko trzeba 0? (znaczy dać się da, ale nie będzie program właściwie działał)
bo jeśli w

 for(i=0;(napis1[i] && napis2[i])!='0';i++){

opuszczę apostrofy, to program nadal będzie działał ok. może mi to ktoś wyjaśnić?

1

Ponieważ w C++ '0' jest literałem o wartości 48.

bo jeśli w

for(i=0;(napis1[i] && napis2[i])!='0';i++){

opuszczę apostrofy, to program nadal będzie działał ok. może mi to ktoś wyjaśnić?

bo ten warunek nie ma sensu, zawsze zwróci true

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