Accueil > Forum > > > > condition
condition
mardi 25 février 2003 à 12:19:33 |
condition

damoun007
|
salut a tous, j aurais voulu savoir la difference entre cela: { int a; if (a=5); .... } et si on met le 5 entre apostrophes ou guillemets. Merci bcp damoun
|
|
mardi 25 février 2003 à 13:59:21 |
Re : condition

vieuxLion
|
pour répondre à ta question 5 est un entier littéral considéré par le compilo comme unint qui vaut ... 5 '5' est un caractère isolé considéré par le compilo comme un char... et vaut ...53 (en décimal) il faut regarder la table ANSI pour cela : '0' vaut 48
de plus, une condition ne s'exprime pas avec = mais avec == ceci pour t'éviter des désagréments plus tard.
------------------------------- Réponse au message : -------------------------------
> salut a tous, > j aurais voulu savoir la difference entre cela: > { > int a; > if (a=5); > .... > } > > et si on met le 5 entre apostrophes ou guillemets. Merci bcp > > damoun
|
|
mercredi 26 février 2003 à 04:17:33 |
Re : condition

jonathanmcdougall
|
> salut a tous, > j aurais voulu savoir la difference entre cela: > { > int a; > if (a=5); > .... > } > > et si on met le 5 entre apostrophes ou guillemets. Merci bcp
5 est un "littéral", un chiffre, une constante, un nombre (comme tu veux) de type int. 5.5 serait encore tout ça, mais de type float.
'5' est un caractère, un character, un char, une lettre (comme tu veux) de type char. À noter que le type char se comporte comme le int, c'est-à-dire que
char c = 65;
contient, sous un système ASCII' la lettre A et que
++c;
contient maintenant (roulement de tambour...) B.
"5" est une chaine de type c, une c-style string, une chaine de caractère, une string, une chaine de caractère terminée par un 0, par un \0, par un NUL, une zero-terminated string (comme tu veux) de type char*. Yurk, me diras-tu.
La différence entre 'a' et "a" est relativement simple. Si tu fais
char c = 'a'; char d = "a";
la deuxième ne devrait pas compiler. La raison vient de la façon dont les strings sont gérées par les compilateurs.
Une string n'est en fait qu'un rassemblement de chars sous forme de tableau :
char mastring[10];
Ici, on pourrait mettre jusqu'à 10 caractères dans ce tableau. Le problème et que si tu fais
std::cout << mastring;
'cout' n'a aucun moyen de savoir où se termine 'mastring'. Il est, en fait, impossible de connaitre directement le nombre d'élément de 'mastring'. 'cout' ne peut pas faire quelque chose comme
for (int i=0; i<sizeof(mastring); ++i)
parce que 'mastring' est en fait un pointeur. Mais tout ça n'est pas si grave.
Ce qu'il faut savoir, c'est que la solution à ce problème est une convention : les chaines de caractères doivent toujours se terminer par le caractère \0. En sachant cela, il est maintenant possible de faire
for (int i=0; ; i++) { if (mastring[i] = '\0') break; //la chaine est terminée
// ....
}
Ce qui nous ramène aux guillemets qui ne sont finalement que pratiques : ils ajoutent automatiquement un \0 à la fin de la string. Donc,
"salut"
est en fait
salut\0
À quoi ça sert? Eh bien sans ça, tu serais obligé de faire :
char *mastring = "salut toi\0";
Ce qui est assez chiant et facile à manquer, te donnant des bugs à n'en plus finir, quasi impossibles à trouver. Les guillemets te l'ajoutent donc automatiquement :
char *mastring = "salut toi";
La morale est que : les apostrophes sont utilisés avec UN SEUL CARACTÈRE et ne rajoutent pas de \0 tandis que les guillemets sont utilisés avec les STRINGS et terminent celles-ci par un \0 automatiquement.
-- Jonathan Mcdougal Montréal, Québec mcdougalljonathan@hotmail.com http://www.multimania.com/utopiasoftware
|
|
mercredi 26 février 2003 à 05:23:11 |
Re : condition

jonathanmcdougall
|
> Une string n'est en fait qu'un rassemblement de chars >sous forme de tableau : > > char mastring[10]; > > Ici, on pourrait mettre jusqu'à 10 caractères dans ce >tableau. Le problème et que si tu fais > > std::cout << mastring; > > 'cout' n'a aucun moyen de savoir où se termine 'mastring'. >Il est, en fait, impossible de connaitre directement le >nombre d'élément de 'mastring'. 'cout' ne peut pas faire >quelque chose comme
Désolé, c'est plus ou moins de la connerie.
char mastring[10]; std::cout << sizeof(mastring);
affiche 10 comme prévu. Là où est le problème est lorsqu'on défini un pointeur vers un char auquel on assigne une string 'temporaire' :
char *mastring = "salut"
Ici, sizeof(mastring) retournera la grosseur du pointeur comme tel, pas de la chose sur laquelle il pointe (car, comme je disais, il n'y a aucun moyen de savoir combien d'éléments contient la string). La solution est donc d'ajouter une \0 à la fin de la string, qui permet de trouver sa fin.
Désolé,
Jonathan Mcdougal Montréal, Québec mcdougalljonathan@hotmail.com http://www.multimania.com/utopiasoftware
|
|
Cette discussion est classée dans : font, green, condition, courier
Répondre à ce message
Sujets en rapport avec ce message
if...else [ par damoun007 ]
bonjour je suis débutant et j'ai un probleme avec le if...else mais aussi avec le do...while et je n'ai pas ose en essayer d autres... Le compilateur
symbolze [ par damoun007 ]
salut, j aurais voulu avoir ce que je devrais mettre comme symbole pour dire différent ( je ne trouve pas le égal barré !) pour metre dans une instr
Liste Chainé en C++... [ par NitRic ]
Bonjour, j'aimerais si possible un petit exemple ou bien un site qui parle des Liste Chainé en C++, pour la créée c'est ok mais c avec le fonctionneme
Concaténation [ par DJ God ]
[redQuel caractère utiliser pour concaténer un texte avec une variable ?][/red]
Mettre une fenette en premier plan et l'activer [ par atao ]
QQun connait il une façon plus élégnate pour mettre une fenette en premier plan et l'activervoid MettreFenetreDevant(HWND hwndDlg){// car si elle est
Base de donnée mais EXEL!! [ par Ben ]
Bonjours,J' utilise BCB 5 Pro et je suis très content de ce logiciel ! Seulement maintensant, je dois accéder à une base de donné mais pas n' importe
Reseau [ par BenjaminRare ]
Bonjour,Si qql 1 pourrait m'aider a trouver un bon site pour apprendre la programmation en c++ pour reseaux et internet.......J'ai commencer la progra
Palindrome et espaces [ par TheRecliner ]
Bonjour,je dois faire petit programme qui détécte si un phrase est un plaindrome ou non....j'ai bien résussi à faire cette détection mais uniquement p
Problème de fenetres [ par Toobad ]
Salut tout le monde,J'suis un ptit nouveau dans la programmation Win32 et comme on peut s'en douter pour un nouveau, j'ai un tas de problèmes. J'ai fa
police et ListBox [ par JeriKo ]
salut à tousça fait 2 heures que j'essaye de changer la police de ma listbox, y a rien à faire ça veut pas :(alors j'ai fait comme çaCListBox *list
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|