0
votes

Pourquoi mon code C ne fonctionne-t-il pas ou qui court-t-il trop lentement?

Mon code en C est:

#include <stdio.h>

main()
{
    int fahr, celsius;
    int lower, upper, step;

    lower = 0;  
    upper = 300;    
    step = 20;  

    fahr = lower;
    while (fahr <= upper); {
        celsius = 5 * (fahr - 32) / 9;
        printf("%d\t%d\n", fahr, celsius);
        fahr = fahr + step;
    }
}


6 commentaires

Semicolon errant après la déclaration de temps


Pas le problème, mais vous devriez utiliser int Main (VOID) comme signature de principal


Quel est cet ancien principal que vous utilisez? Mettez à niveau votre compilateur et utilisez INT principal (void)


Allumez les avertissements du compilateur et vous verrez ce qui ne va pas.


@ Machine_1 Quel est le point d'utiliser void dans la liste des arguments? Ce n'est pas obligatoire.


toujours lire des avertissements du compilateur. Vous obtiendrez quelque chose comme ": 13: 26: AVERTISSEMENT: tandis que la boucle a du corps vide [- corps-éponge]". Et voir Qu'est-ce que le rendement principal de C et C ++?


3 Réponses :


1
votes

Retirez le point-virgule après la déclaration de temps.

Comme cela, la boucle tandis que la boucle est une boucle infinie, car le code à l'intérieur des supports bouclés n'est pas considéré comme le corps de la boucle. La boucle tandis que la boucle a un corps vide et ne terminera jamais.

Le code dans les supports bouclés ne sera jamais exécuté.


1 commentaires

Il convient de noter que GCC vous avertira à propos de ce problème si vous activez des avertissements (-wall pour la plupart d'entre eux, mais ce problème spécifique est pris par -wmoislading-indentat). Vous devriez toujours toujours passer -wall, surtout pendant que vous apprenez.



0
votes

Votre boucle tandis que écrit ne fait pas ce que vous avez l'intention de. L'erreur est sur cette ligne:

tandis que (Fahr <= supérieure); {

Le point-virgule ici termine prématurément la déclaration de temps. Cela crée une boucle infinie, car votre programme évalue maintenant continuellement fahr <= supérieur sans modifier la valeur de Fahr .

Supprimer que le point-virgule et votre programme s'exécuteront comme prévu.


0 commentaires

0
votes

Changer xxx

à xxx

à cause du point-virgule après la boucle de la boucle tandis que la boucle { } partie. Donc, la valeur de fahr & supérieure ne change jamais et la boucle tandis que la boucle fonctionne pour toujours. Retirez le point-virgule, votre code fonctionnera bien.


0 commentaires