2013-06-11 4 views
-5

Je me demande pourquoi ce morceau de code ne fonctionne pas correctement. Rms est la valeur calculée par un traitement et sort pour être 0,000146 et je veux voir le résultat comme Test passé, mais j'ai échoué au test. Qu'est-ce qui ne va pas?Erreur dans le morceau de code suivant

If(rms <0.001){ 
    return Test_PASSED 
    } 
    else{ 
    return Test_FAILED 
    } 

Test_PASSED et TEST_FAILED est une énumération définie comme suit:

//! Test possible les résultats typedef enum

{

Test_PASSED = 0, //!< passed

Test_FAILED = -1 //!< failed

} Test_Result_e;

+4

Nous devons voir plus de code. Nous ne connaissons même pas le type de RMS. – Paulpro

+0

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html –

+1

@BinayakaChakraborty Comment cela s'applique-t-il ici? –

Répondre

1

Vous devez suffixe float constantes avec f. Je suppose que votre variable rms est de type float. Parce que, la constante 0.001 aura implicitement double précision de type.

Si je suis correct, ce qui suit devrait fonctionner.

if(rms <0.001f){ 
    return TestPassed 
    } 
    else{ 
    return testFailed 
    } 
+0

Non c'est pas je l'ai déjà essayé. –

+1

@DX Je vois, alors s'il vous plaît poster un peu plus de code ... dans sa forme actuelle, il est difficile de dire l'erreur ..... – pinkpanther

0

La question originale n'a pas précisé quel Test_PASSED ou Test_FAILED sont. Mais un bug possible était qu'ils ont été accidentellement mis à la même chose.

Un autre bug possible est la façon dont ils sont testés, par ex. confusion entre == et =.

+0

'Test_PASSED' et' Test_FAILED' sont différents de 'TestPassed' et' testFailed'. Je pense que vous devriez poster tout le code pertinent. – Stochastically

+0

voir mon édition. Je l'ai mentionné. –

+1

J'ai modifié ma réponse. Plus de code aiderait. Aussi, comment savez-vous que RMS est la valeur que vous dites? – Stochastically

0

Le caractère if est écrit en majuscule i, c'est incorrect. Les instructions à l'intérieur du bloc if ne sont pas terminées avec;

Le code aurait dû être

if (rms < 0.001) { 
    return TestPassed; 
} 
else { 
    return testFailed; 
} 

Pourtant, on ne sait pas ce que TestPassed et testFailed sont - vous copié une pièce incomplète du code. Vous avez probablement manqué l'orthographe de l'un d'eux aussi. Enfin, il semble que le plus gros problème est que vous apprenez la programmation en général en utilisant C. Il existe de bien meilleurs langages pour cela. Tout langage de programmation moderne de haut niveau serait meilleur. Essayez, par exemple, python ou ruby.

+0

Je n'apprends pas :) –

Questions connexes