Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
743 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Problème simple de calcul

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème simple de calcul

n°2205428
xfreekingx
Posté le 04-10-2013 à 19:01:41  profilanswer
 

Bonjours a tous,
 
Mon problème est assez simple.
J'ai essayé le code suivant:
 
int main()
{
    long a = 15;
    char b = 'a';
    short c = 10;
 
    int d = 0;
    d = b + 1;
 
    printf("%i", d);
    return 0;
}
 
et la, je m'attendais a voir la réponse : 16     mais visiblement la réponse est : 98 ( avec mon IDE)
C'était un petit exo un site :"Introduction a la programmation"(3.8) et eux, on comme correction 66. (la correction est en ASCII 65)
 
Je ne comprends pas pour quelles raisons la réponse est ainsi.
Qqun a-t-il une explication?
 
Merci.
 
 
 

mood
Publicité
Posté le 04-10-2013 à 19:01:41  profilanswer
 

n°2205434
xilebo
noone
Posté le 04-10-2013 à 20:06:00  profilanswer
 

C'est pas compliqué.
 
tu initialises b avec la valeur 'a'. Or, 'a' vaut 97 en code ASCII ( a minuscule , voir : http://fr.wikipedia.org/wiki/ASCII ).
 
d prend donc la valeur b + 1. b est converti du type char au type int au passage de façon implicite  , ce qui donne d = 97 + 1 = 98
 
Je ne vois pas pourquoi tu attends la valeur 16, ca aurait été ça si tu avais fait d = a + 1; ( a étant initialisé à 15 ).
 

n°2205439
Profil sup​primé
Posté le 04-10-2013 à 21:04:29  answer
 

Bonjour,
 
Ca sert à quoi d'additionner des caractères ?

n°2205443
xfreekingx
Posté le 04-10-2013 à 22:37:34  profilanswer
 

Merci xilebo, c'est très clair. Je n'avais pas pensé a la conversion des caractères en chiffre. Je pensais que b serait convertit en long affecté de la valeur 15.

n°2205444
xilebo
noone
Posté le 04-10-2013 à 22:43:36  profilanswer
 

ok je comprends mieux.
 
 
effectivement  
 
b = a;  
 
et  
 
b = 'a';
 
n'ont pas la même signification.
 
Dans le premier cas, tu affectes la valeur de la variable a dans b. a étant un long et b un char, il y a donc un cast avec un risque potentiel de perte de données ( notamment si a avait contenu une valeur supérieure au max ou inférieure au min d'un char , ce qui n'est pas le cas ici ).
 
Dans le second cas, tu affectes simplement le caractère ASCII a ( représenté par 'a' )  dans la variable b. Tu aurais pu faire b = 97; ou encore b = 0x61;  que ça n'aurait rien changé ( à part la lisibilité ).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème simple de calcul

 

Sujets relatifs
problème de cote et de prise en charge du texteMYSQL problème count via out join
Calcul d'un orthodromie et recouvrement d'une sphère.Problème programmation VBA
Calcul de d'une orthodromie avec Adaproblème VBA avec Find/Replace
Probleme syntaxe ? [résolu]Problème affichage widget Twitter sur site web mobile
Probleme avec les .floatContent sur dreamweaverProbléme IMAGE pour mon site
Plus de sujets relatifs à : Problème simple de calcul


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR