IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Limites de conversion char vers int


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    Janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 147
    Par défaut Limites de conversion char vers int
    Bonjour,
    dans le programme ci dessous, si je mets 29658 à la variable msg tout va bien, il m'affiche msgNum+1 = 29659,
    mais si je mets 293658, alors là msgNum affiche 31515 au lieu de 293658 !
    je ne comprend pas pourquoi, tant que chiffre contenu dans la variable char msg[] est à 5 digit ca fonctionne et à 6 digit ca marche plus !
    merci de votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    char msg[]= "29658"; // Tableau qui contient notre message
    int msgNum=0;
     
    void setup() // Fonction setup()
    {
        Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
        Serial.println("Tuto VirtualWire"); // Petit message de bienvenue
     
        vw_setup(2000);     // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
    }
     
    void loop() // Fonction loop()
    {
         Serial.println(msg);
       int msgNum = atoi(msg);
         Serial.print ("msgNum = ");
        Serial.println(msgNum);
        Serial.println(msgNum+1);
        delay(1000);

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 430
    Par défaut
    Bonjour,
    A mon, avis l'arduino utilise ici des entiers en 16 bits signés, donc la plage va de -32768 à 32767.
    Et comme le bit de signe est celui de poids fort, un dépassement de capacité se résume à un changement de signe... µC'est précisément ce que tu observes.

    Par contre n'utilisant pas d'arduino, je ne sais pas si tu peux utiliser des entiers sur plus de 16 bits.

    Tatayo.

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    Janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 147
    Par défaut
    Merci Tatayo pour cette réponse simple et claire.
    je n'y avais pas pensé (normal je n'y connais pas grand chose)
    je viens de vérifier et oui ! tu as raison ! merci
    Sujet résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertion char vers int
    Par barthelv dans le forum C
    Réponses: 8
    Dernier message: 08/10/2011, 21h45
  2. Conversion d'un *(?) char vers int
    Par theclem35 dans le forum Débuter
    Réponses: 3
    Dernier message: 02/06/2011, 14h08
  3. Conversion float vers int
    Par vargasvan dans le forum C
    Réponses: 2
    Dernier message: 05/10/2005, 17h29
  4. Conversion VARCHAR vers INT
    Par Slash dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/05/2005, 10h43
  5. Conversion char * vers wchar_t
    Par Zapan dans le forum C++
    Réponses: 4
    Dernier message: 24/02/2005, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo