je cherche à comprendre la différence qui induit le probleme ci-dessous:
void maclasse:function(char *ptr) {
short int offset=4;
printf("Youhou %x\n",*(ptr+offset));
cout << "Youhou " << (*(ptr+offset)) << endl;
}
sortie standard :
----
Youhou 0
Youhou
----
sachant que ptr pointe sur une zone allouée par un:
char* a=(char*)malloc(8);
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc Boyer
In article <cp1vfp$7hu$, fabrizio wrote:
Bonjour,
je cherche à comprendre la différence qui induit le probleme ci-dessous: void maclasse:function(char *ptr) { short int offset=4; printf("Youhou %xn",*(ptr+offset)); cout << "Youhou " << (*(ptr+offset)) << endl; }
sortie standard : ---- Youhou 0 Youhou ----
sachant que ptr pointe sur une zone allouée par un: char* a=(char*)malloc(8);
pourquoi le 'cout' ne m'imprime pas la valeur ?
Parce que "cout<<" s'adapte au type de ton paramêtre, ici un char. Le printf equivalent serait avec de formateur %c et pas %x.
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <cp1vfp$7hu$1@utcnews.utc.fr>, fabrizio wrote:
Bonjour,
je cherche à comprendre la différence qui induit le probleme ci-dessous:
void maclasse:function(char *ptr) {
short int offset=4;
printf("Youhou %xn",*(ptr+offset));
cout << "Youhou " << (*(ptr+offset)) << endl;
}
sortie standard :
----
Youhou 0
Youhou
----
sachant que ptr pointe sur une zone allouée par un:
char* a=(char*)malloc(8);
pourquoi le 'cout' ne m'imprime pas la valeur ?
Parce que "cout<<" s'adapte au type de ton paramêtre,
ici un char.
Le printf equivalent serait avec de formateur %c et pas %x.
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
je cherche à comprendre la différence qui induit le probleme ci-dessous: void maclasse:function(char *ptr) { short int offset=4; printf("Youhou %xn",*(ptr+offset)); cout << "Youhou " << (*(ptr+offset)) << endl; }
sortie standard : ---- Youhou 0 Youhou ----
sachant que ptr pointe sur une zone allouée par un: char* a=(char*)malloc(8);
pourquoi le 'cout' ne m'imprime pas la valeur ?
Parce que "cout<<" s'adapte au type de ton paramêtre, ici un char. Le printf equivalent serait avec de formateur %c et pas %x.
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
Au risque de dire une annerie, je crois que le premier affiche le code ASCII du caractere en Hexa. La deuxieme essaie d'afficher le caractere lui-meme.
Au risque de dire une annerie, je crois que le premier affiche le code
ASCII du caractere en Hexa.
La deuxieme essaie d'afficher le caractere lui-meme.
Au risque de dire une annerie, je crois que le premier affiche le code ASCII du caractere en Hexa. La deuxieme essaie d'afficher le caractere lui-meme.
Parce que "cout<<" s'adapte au type de ton paramêtre, ici un char. Le printf equivalent serait avec de formateur %c et pas %x.
merci. quels moyens existe-t-il pour changer le format d'impression du cout ?
Je ne fais pas ça tous les jours (généralement, le comportement de << me conviens). La première chose à faire, c'est de dire que tu t'intéresses à la valuer numérique transportée par ton char, et là, un static_cast vers int (ou short ?) parait approprié, ou une affectation qui fera la conversion implicite/ Ensuite, il faut afficher l'entier en hexa: un coup de google: C++ afficher hexa me donne cout << hex << i;
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.
In article <cp21bt$8ag$1@utcnews.utc.fr>, fabrizio wrote:
Parce que "cout<<" s'adapte au type de ton paramêtre,
ici un char.
Le printf equivalent serait avec de formateur %c et pas %x.
merci.
quels moyens existe-t-il pour changer le format d'impression du cout ?
Je ne fais pas ça tous les jours (généralement, le comportement de <<
me conviens).
La première chose à faire, c'est de dire que tu t'intéresses à
la valuer numérique transportée par ton char, et là, un static_cast
vers int (ou short ?) parait approprié, ou une affectation
qui fera la conversion implicite/
Ensuite, il faut afficher l'entier en hexa: un coup de
google: C++ afficher hexa
me donne
cout << hex << i;
Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.
Parce que "cout<<" s'adapte au type de ton paramêtre, ici un char. Le printf equivalent serait avec de formateur %c et pas %x.
merci. quels moyens existe-t-il pour changer le format d'impression du cout ?
Je ne fais pas ça tous les jours (généralement, le comportement de << me conviens). La première chose à faire, c'est de dire que tu t'intéresses à la valuer numérique transportée par ton char, et là, un static_cast vers int (ou short ?) parait approprié, ou une affectation qui fera la conversion implicite/ Ensuite, il faut afficher l'entier en hexa: un coup de google: C++ afficher hexa me donne cout << hex << i;
Marc Boyer -- Je ne respecte plus le code de la route à vélo depuis une double fracture due au fait que j'étais le seul à le respecter.