=20)?return(10):return(20); } int main() { int i = fun(20); printf("%d",i); } Waarom geeft deze compileerfout? "> =20)?return(10):return(20); } int main() { int i = fun(20); printf("%d",i); } Waarom geeft deze compileerfout? "> =20)?return(10):return(20); } int main() { int i = fun(20); printf("%d",i); } Waarom geeft deze compileerfout? " />

C Output retourwaarde

int fun(int a) {
    if((a=10) && (a==20))
        pritnf("Good question\t.");
    (a>=20)?return(10):return(20);
}
int main() {
    int i = fun(20);
    printf("%d",i);
}

Waarom geeft deze compileerfout?

6
if ((a = 10) && (a == 20)) Misschien geen compileerfout, maar wat ...?
toegevoegd de auteur chris, de bron
@uts: ik heb de inspringing voor jou gerepareerd. Zet de volgende keer uw code in voordat u hier een bericht plaatst.
toegevoegd de auteur SuperSaiyan, de bron
Heeft u erover nagedacht meer leesbare code te schrijven? En trouwens, mijn libtelepathy.so moet worden geüpgraded, dus zou je het erg willen weten wat de uitvoer van de compiler was?
toegevoegd de auteur Zaur Nasibov, de bron
Ook geeft een> = 20 terug? 10: 20;
toegevoegd de auteur Zaur Nasibov, de bron

3 antwoord

You want return a >= 20 ? 10 : 20. return is a statement, and therefore can't be part of an expression.

7
toegevoegd
Juiste oplossing, maar zonder uitleg van het probleem (dat return een statement is en geen onderdeel kan zijn van een expressie.
toegevoegd de auteur ugoren, de bron
1. Dat is de enige compileerfout, IMO.
toegevoegd de auteur SuperSaiyan, de bron
@ugoren - goed punt; Ik heb mijn antwoord bewerkt.
toegevoegd de auteur Philip Kendall, de bron

Voor één printf is het verkeerd gespeld als pritnf in:

pritnf("Good question\t.");

Het zou echt nuttig zijn als u het exacte compileerfoutbericht met de vraag zou kunnen posten.

5
toegevoegd
if( (a=10) && (a==20) ) 

zou moeten zijn

 if( (a==10) && (a==20) )

dit is niet logisch, bedoel je of?

en je mist de terugkeer

0
toegevoegd
Dat levert geen compileerfout op - het is geldig C. Hoewel het waarschijnlijk niet is wat er werd bedoeld, ben ik het daarmee eens - maar zelfs gecorrigeerd heeft geen zin omdat een wil niet gelijk is aan zowel 10 als 20 op hetzelfde moment.
toegevoegd de auteur Philip Kendall, de bron
daarom dacht ik dat het een 10 of 20 verklaring was
toegevoegd de auteur Shawn, de bron