2012-06-23 4 views
-6
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); 
} 

Pourquoi cette erreur de compilation est-elle générée?C Sortie Valeur de retour

+1

'if ((a = 10) && (a == 20))' Peut-être pas une erreur de compilation, mais quoi ...? – chris

+4

Avez-vous envisagé d'écrire du code plus lisible? Et en passant, mon libtelepathy.so a besoin d'être mis à jour, alors cela vous dérangerait-il de dire quelle était la sortie du compilateur? –

+3

@uts: J'ai corrigé l'indentation pour vous. La prochaine fois, indentez votre code avant de poster ici. – SuperSaiyan

Répondre

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

devrait être

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

cela ne peu pas de sens avez-vous dire ou?

et vous manquez le retour

+2

Cela ne produira pas une erreur de compilation - c'est valide C. Bien que probablement pas ce que signifiait, je suis d'accord - mais même corrigé cela n'a pas de sens car une volonté n'égale pas 10 et 20 en même temps temps. –

+0

c'est pourquoi je pensais que c'était ment 10 ou 20 statment – Shawn

7

Vous voulez return a >= 20 ? 10 : 20. return est une instruction et ne peut donc pas faire partie d'une expression.

+0

+1. C'est la seule erreur de compilation, IMO. – SuperSaiyan

+3

Solution correcte, mais sans explication du problème (que 'return' est une instruction, et ne peut pas faire partie d'une expression – ugoren

+0

@ugoren - bon point, j'ai édité ma réponse. –

5

Pour un printf est mal orthographié est comme pritnf dans:

pritnf("Good question\t."); 

Il serait vraiment utile si vous pouvez poster le message exact d'erreur du compilateur à la question.