Je cet extrait du codequestion simple sur C
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
pourquoi je ne peux pas recevoir mes Hello
merci à l'avance! comment compilateur exactement fait cette comparaison if(str[0] == 1)
?
Je cet extrait du codequestion simple sur C
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
pourquoi je ne peux pas recevoir mes Hello
merci à l'avance! comment compilateur exactement fait cette comparaison if(str[0] == 1)
?
Vous voulez faire:
if (str[0] == '1') ...
La différence est que vous comparez str[0]
au nombre 1, alors que mon code ci-dessus compare str[0]
au caractère'1'
(qui a une valeur ASCII 49). Tous les langages de programmation ne traitent pas les caractères et les nombres de manière interchangeable, mais C le fait.
Consultez la section ASCII pour plus d'informations sur la manière dont les ordinateurs mappent les nombres aux caractères.
vous comparez char à un int, il devrait être
if(str[0] == '1')
D'abord la bonne façon est de le faire:
if(str[0] == '1')
Ou:
if(str[0] == 49)
Deuxièmement, vous devez prendre soin de la différence entre 1
et '1'
1
est une valeur entière ...'1'
est un personnage dont ASCII est égal à 49Ce qui signifie: ('1'==1)
est faux !!
Cependant ('1'==49)
est vrai !!
Lorsque vous écrivez '1'
en C/C++, il -automatically- traduire au correspondant ASCII49
, c'est ainsi '1'
est effectivement représenté en C/C++
vous devez demander
* str = "123"; if (str [0] == '1') printf ("Bonjour \ n");
Voir les guillemets simples autour de 1? Vous devez comparer un personnage et comparer un entier.
Essayez d'utiliser if(str[0] == '1')
au lieu de comparer avec 1
ce que signifie un et vrai dans C :)
Ceci est parce que vous comparez le premier caractère de str
au numéro 1. Le code de caractère réel de '1'
est 49.Ainsi, l'une de ces travailleront:
if (str[0] == '1')
if (str[0] == 49)
Rappelez-vous que 1
n'est pas la même chose que '1'
. Le premier est un nombre, le second est un personnage. Si vous voulez en savoir plus à ce sujet, vous devriez probablement regarder ici: http://en.wikipedia.org/wiki/Character_encoding
* str est un type de pointeur char var ... qui stocke l'adresse de base de la chaîne .str [0] contient le premier caractère ... qui est 1 et il est également char ..so, i il est noté avec est '1' ...
essayez ceci:
if(str[0] == '1')
printf("Hello \n");
utiliser cette ==>
if(str[0] == '1')
printf("Hello \n");
en essayer un ...
if(str[0] == '1')
printf("Hello \n");
comment exactement le compilateur fait cette comparaison? – lego69
S'il vous plaît jeter un oeil sur le edit – Betamoo
Pourquoi -1 ......? – Betamoo