Legge uttalelser inne klammeparentes endre koden funksjonalitet?

stemmer
0

Jeg er ganske ny på C ++, jeg prøver å gjenskape en kode fra C ++ referanse som viser områder i en streng til streker. Her er koden

void sp_to_dash(const char *str){
    while(*str){
        if(*str==' ')
            cout<<(%c, '-');

        else
            cout<<(%c, *str);
            str++;

    }
}

int main(){
    sp_to_dash(hello world how are you);
    int j;
    cin>>j;
    return 0;
}

Nå er dette fungerer perfekt, utgangs jeg får er UTGANG: hello-world-how-are-you

Men når jeg legge koden i sp_to_dashfunksjon i klammeparentes som dette

void sp_to_dash(const char *str) {
    while (*str) {
        if (*str==' ') {
            cout << (%c, '-');
        } else {
            cout << (%c, *str);
            str++;
        }
    }
}

Utgangen jeg får er en uendelig løkke av streker, jeg forstår ikke hvorfor det er, Kan noen forklare meg hvorfor legge kode i klammeparentes som dette utløser en uendelig loop?

Publisert på 02/09/2018 klokken 05:42
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Den innrykk er misvisende. Det kan bare være en enkelt setning under en hvis ellers gren. For å sette flere, må det være en sammensatt setning (int klammeparentes). Så dette

    else
        cout<<("%c", *str);
        str++;

... tilsvarer dette

    else
        cout<<("%c", *str);
    str++;
Svarte 02/09/2018 kl. 05:46
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more