Un tout petit probleme de chr(n);

stephchen Messages postés 4 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 30 avril 2005 - 5 févr. 2005 à 03:28
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 6 févr. 2005 à 15:44
bonjour, je n'arrive pas a compller le tout petit programme suivant:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(){

char c;
cj=CHR(49);
putchar(c);
getchar();
}

le compilateur (dev c++) me dit : [Linker error] undefined reference to `CHR'

SVP aidez moi pour un problème si simple...

17 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
5 févr. 2005 à 06:32
Je ne sais pas ce que tu voulais vraiment faire avec ton "chr", mais je pense que tu avais oublié le 'a' de "char" :



#include <stdio.h>

#include <stdlib.h>

#include <string.h>



int main(){



char c;

c = char(49);

putchar(c);

getchar();

return 0;

}

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
0
stephchen Messages postés 4 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 30 avril 2005
5 févr. 2005 à 10:55
Pardon pardon, j'ai fait une faute de frappe mais ca marche tjs pas :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(){

char c;
c=CHR(49);
putchar(c);
getchar();
}

c'est le CHR qui me fait un coup de filou : il s'agit de la commande qui consiste à retourner le caractère correspondant au code ASCII (expl : CHR(48) retourne 0 si je fais pas d'erreur)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
5 févr. 2005 à 10:57
donc c'est bien cà :




#include <stdio.h>

#include <stdlib.h>

#include <string.h>



int main(){



char c;

c = char(49);

putchar(c);

getchar();

return 0;

}



char(49) te renvoie 1, c'est-à-dire le code ASCII correspondant à 49 !


DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
5 févr. 2005 à 11:31
c = char(49); // ça existe ce truc ???
c = 49; // là oui je connais

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
5 févr. 2005 à 14:15
c = char(49); : C'est une contruction par copie je crois, equivalent a un contructeur char(const char& c); mais en C++.

pour STR à mon avis elle ne fait pas partie de la lib standard du C. Il manque surement un include.
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
5 févr. 2005 à 14:30
char c = char(49);
y pas notion de constructeur ici, c'est juste du à la pollution mentale quand on a commencé par VB, le plus gros travail en pareil cas est d'arriver à se vider le cerveau.

ciao...
BruNews, MVP VC++
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
5 févr. 2005 à 14:54
Bonjours,



il s'agit bien d'un appel du constructeur, mais pas de recopie.



en c:



char c = 49;



en c++,



appel du constructeur explicite:



char c = char(49);



ou static_cast:



char c = static_cast<char>(49);
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
5 févr. 2005 à 14:56
et ça construit quoi sur un 8 bits ???

ciao...
BruNews, MVP VC++
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
5 févr. 2005 à 15:10
en c++ tout les types sont des objets et la force du typage impose que toute conversion soit définie.



ca construit sur n bits 49, char étant un type scalaire, mais rien ne
dit dans la norme que sa taille soit 8 bits, ca dépend de
l'architecture mais sizeof(char) vaut toujours 1
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
5 févr. 2005 à 15:20
et sincerement, ça ne te semble pas aussi utile que de la philo ?
si sizeof(char) vaut toujours 1 octet, a moins de changer tout le binaire, ça fera toujours 8 bits.

ciao...
BruNews, MVP VC++
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
5 févr. 2005 à 15:28
justement, sizeof ne retourne pas une taille en octet mais en char ! donc sizeof(char) toujours 1 par définition

la logique ce n'est pas de compter en octets mais avec la plus petite
entité adressable (ce que désigne char) pour rester portable
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
5 févr. 2005 à 15:42
ben voila une petite discu sympa pour aujourd'hui, pour finir de mon cote, je peux constater que le compilo 'pense' comme moi quand je regarde le listing asm resultant, je ne crois pas que d'appeler octet 'char' changera l'affaire d'un iota.

ciao...
BruNews, MVP VC++
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
5 févr. 2005 à 15:43
rien à voir avec VB. C'est juste une difference entre le C et le C++. Le C++ utilise des contructeurs même pour les types de base et ça a son utilité surtout avec les templates.
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
5 févr. 2005 à 15:50
bah je n'ai vu ni C++, ni constructeur et encore moins de template dans l'exemple du depart.

ciao...
BruNews, MVP VC++
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
5 févr. 2005 à 15:55
bien sur que le compilateur génère le code assembleur adéquate en x86, c'est le but de la protabilité du source
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
5 févr. 2005 à 16:33
Sur ce coup la Bruce, t'es le plus fort.
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
6 févr. 2005 à 15:44
Pour poursuivre, c'est la constante CHAR_BIT qui indique le nombre de bits d'un char.



En c:



#include <stdio.h>



int main()

{

printf( "Taille d'un int: %u bits\n", sizeof(int) * CHAR_BIT );

return 0;

}



En c++:



#include

#include <limits>





using namespace std;



int main()

{

cout << "Taille d'un int: "


<< sizeof(int) * numeric_limits::digits

<< " bits\n";

}
0
Rejoignez-nous