Int a = 'txet';

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 19 sept. 2004 à 15:45
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 - 19 sept. 2004 à 23:52
Salut,
Je viens de remarquer une chose étonante dans vs.net:
int a = 'txet';

ne génere pas d'erreur de compilation. Est-ce une spécificité de vs ou une norme du langage?
Merci.

18 réponses

cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
19 sept. 2004 à 15:55
Le char est casté en int. Vérifie : printf("%c", a);
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 sept. 2004 à 15:55
equivalent de
a = 0x74786574; // "text"
to norme or not to norme ??? bof...

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 sept. 2004 à 15:57
BruNews> Tu trouves vraiment qu'un 0x74786574 est plus lisible qu'un 'txet'?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 sept. 2004 à 15:59
Apparemment MinGW le prend aussi
0

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

Posez votre question
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
19 sept. 2004 à 16:05
C'est des apostrophes, donc c'est un char, pas un char* !

équivalent à int a = 't';
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 sept. 2004 à 16:06
Plus lisible peut-etre non, comme d'hab question d'habitude.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 sept. 2004 à 16:07
Oui je sais, l'exemple de BruNews aussi c'est un int, seulement c'est juste au niveau de l'écriture, je savais pas qu'on pouvait mettre plusieurs caractères entre '
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 sept. 2004 à 16:10
Nebula >

char a = 'thjhjhjk'; est equivalent a
char a = 't';

mais

int a = 't'; est plutot equivalent a
int a = '\0\0\0t';

ca serais pas plutot ca ?
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
19 sept. 2004 à 16:17
Non :

int main(void) {
int a = 'abc';
printf("%c\n", a);
printf("%i\n", a);
}

donne à l'exécution :

$ a
c
6382179

Bizarre, je croyais que seul le premier char était pris dans le cast... Bah.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 sept. 2004 à 16:19
ben non c'est ce que je disait, et quand tu fais %c printf ne prend que les 8 bits de poids faibles de ton entier
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
19 sept. 2004 à 16:21
Mouarf... Mais c'est spécifié dans la norme, ce truc ?

(heureusement que GCC affiche des warnings même si on les lui demande pas, çà pourrait être prise de tête ce truc)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 sept. 2004 à 16:28
non, la ca m'etonnerais, ca depend plutot de comment le compilo transforme ces constantes litterales en entier
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
19 sept. 2004 à 16:55
vc 6 ne génere pas d'erreurs non plus, par contre pas possible de mettre plus que 4 chars (int a = 'texte' provoque l'erreur de compil' : error C2015: too many characters in constant). dc effectivement 4 char (ou moins) entre ' ' peuvent etre convertis en int...
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
19 sept. 2004 à 17:26
Salut,
Interessant... je connaissais pas aussi.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 sept. 2004 à 17:28
N'est-ce pas?
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
19 sept. 2004 à 22:51
cosmobob > Normal que tu puisses pas mettre plus de 4 char, après tu dépasses les 32 bits de l'entier.
Théoriquement, sur un _int64 tu dois pouvoir en mettre jusqu'à 8 sans erreur.

eRoZion
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 sept. 2004 à 23:08
a mons avis 'e', 'eeee' ou 'eeeeeeee' restent des entiers

c'est le cas sous gcc
sizeof 'e' sizeof 'eeee' sizeof 'eeeeeeee'
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
19 sept. 2004 à 23:52
eRoZion > ta théorie est fausse
lol :)
0
Rejoignez-nous