|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 11 ![]() |
bonjour
je débute tout juste en C++ en travaillant sur les définitions des différents type j'ai appris que bool pouvait être converti en int et vice versa plus précisément les int différents de 0 sont des bool de valeur true et les bool true peuvent prendre en valeur int 1 on enchaine en disant qu'un pointeur est facilement convertible en bool sachant qu'un pointeur non nul est converti en true et un pointeur nul en false j'ai envie de dire quel est l'intérêt?? merci d'avance cordialement |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() Inscription : août 2004 Messages : 3 665 ![]() |
A vrai dire, je me suis toujours posé la question.
J'ai l'impression que le seul intérêt de ces conversions est de pouvoir écrire du code sale. Des choses du style par exemple: Code :
Il y a peut-être derrière cela des histoires de compatibilités avec le C, ou peut-être des utilisations spécifiques dont j'ignore tout. Mais après 10 ans d'expérience en c++, je n'en ai jamais eu l'utilité, et je serais tenté de te conseiller d'oublier cette histoire. edit: à noter qu'avec le c++11, il est dorénavant préférable d'utiliser nullptr (à la place de 0 ou NULL). Tu trouveras un exemple directement en rapport avec ta question ici: http://www.cprogramming.com/c++11/c+...num-class.html |
||
|
|
02
|
|
|
#3 | |||||
|
Expert Confirmé Sénior
![]() ![]() Emmanuel DelogetDéveloppeur informatique Inscription : septembre 2007 Messages : 1 826 ![]() |
Citation:
Code :
Le langage tourne autour de la notion que false, 0, NULL et nullptr sont représenté par des valeurs qui sont égales à 0, assimilable à une valeur "faux" ou "incorrect", tandis que true, un entier quelconque != 0, un pointeur non nul, ... tout ça est différent de 0, et est donc assimilable à une valeur "vrai" ou "correct". Ca permet d'écrire du code plus simplement, et c'est tellement idiomatique qu'on ne peut pas dire que le code est peu lisible. En terme de maintenance, c'est tout aussi propre - la différence entre tester xxx == 0 ou xxx est quand même peu significative. Cependant, il faut apprendre à lire ce code comme étant "si xxx est correct", et non pas "si xxx est 0". 0 est une valeur spéciale, et si un test explicte contre 0 doit être fait, alors ce 0 spécifique est mieux représenté par un #define (donc le code devient if (xxx == MA_VALEUR_SPECIALE).
__________________
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...] Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi. Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça. Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas. Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas. |
|||||
|
30
|
|
|
#4 |
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 311 ![]() |
De mémoire, la raison de l'identité bool == int est que les premières versions du C++ (ou du C ?) n'avait pas de type booléan et que l'on utilisait un entier à la place. Par compatibilité, c'est resté (a confirmer par un plus vieux de la veille que moi)
Pour nullptr, un peu de lecture : Nouvelles fonctionnalités du C++11 - La constante nullptr
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
00
|
Copyright © 2000-2013 - www.developpez.com