Bonjour,
J'essaye de faire une synthèse de tout ce que j'apprends (je travaille sur esp32 - DOIT ESP32 DEVKIT 1).
Si je souhaite assigner une valeur à une variable, j'ai 3 possibilités :
ex 1 : double somme = 0 ;
ex 2 : double somme (0) ;
ex 3 : double somme {0} ;
Ces trois expressions ont exactement la même signification.
Par exemple dans ce code où je calcule une moyenne dans une boucle for j'initialise la variable i (lvalue) avec la valeur 0 (rvalue) de la manière suivante :
for (int i = 0; i < taille; ++i) somme += tableau[i]; //classique for (int i{0}; i < taille; ++i) somme += tableau[i];
Les possibilités d'écrire du code sont très nombreuses et pas seulement lorsqu'on assigne une valeur à une variable ...
C'est ce qui fait la richesse du C++.
Oui il y a plusieurs possibilités qui ont une semantique différente
Pour une valeur numérique on préfère généralement la formulation avec =
On réserve les parenthèses pour l’instantiation d’objets un peu moins triviaux et passer les paramètres au constructeur et les accolades plutôt pour les liste d’initialisation, par exemple un tableau
Je plussoie J-M-L.
Pourquoi faire compliqué quand on peut faire simple ?
Poir moi l'affectation A = B est la plus lisible, la plus immédiate.
Je dois cependant admettre qu'aux premiers jours de mon apparentissage de la programmation, l'expression suivante : x = x + 1
était une horreur inepte pour un gars entièrement élevé aux mathématiques. Mais bon, on s'y fait rapidement.
C'est bien ce qui me semblait tout dépend du contexte :
Pour moi aussi seulement voilà, certains mélangent les genres :
template<typename T>
T moyenne(T tableau[], int taille)
{
T somme(0); //La somme des éléments du tableau
for(int i(0); i<taille; ++i)
somme += tableau[i];
return somme/taille;
}
Ici c'est un cours openclassrooms sur les template, ailleurs c'est autre chose. Une des aptitudes indispensable au programmeur c'est sa faculté à s'adapter ...
Tout le monde n'a pas l'esprit structuré comme @J-M-L ou le pragmatisme de @biggil ce qui fait que l'on trouve tous les styles sur la toile !
J'imagine qu'avec les autres langages c'est peut-être différent.
En tout cas mettre ça noir sur blanc m'aide beaucoup dans mon apprentissage.
j'imagine que c'est ce code qu'il faut écrire en pascal pour que J soit égal à 15 ...
Là encore ça va car la différence entre les deux langages est importante c'est donc difficile de se mélanger les pinceaux ...
Oui, donc comme on ne connaît pas le type T, on utilise la notation d’instanciation
Pour la boucle for C’est plus discutable pour l’index.
On utilise d’ailleurs parfois les template aussi pour maintenir le type du tableau comme ça la fonction connaît sa taille et on n’a pas besoin d’index et on utilise un range for.
C'est surtout dans le cadre de cette boucle que l'expression m'a interpellé !
Ce n'est pas le seul cas où l'utilisation d'une expression d'affectation est inappropriée sur la toile.
certains décident de pousser la POO jusqu’au bout et utilisent cette notation pour bien montrer qu’en C++ même les types de base se comportent comme des classes. C’est un choix qui enterre un peu l’histoire et le lien avec le C… chacun fait comme il veut ensuite
Tant que l'abandon du C ne va pas à l'encontre de la gestion de la mémoire bien sûr. En tout cas merci pour le partage. Vos interventions me sont toujours très utiles pour orienter mon jugement.
Quelle chance de vous avoir comme interlocuteur !
Bonne soirée.
Merci
@biggil si c'est moi, c'est tout simplement de la maladresse du au fait qu'avec @J-M-L le niveau est tellement haut que j'essaye gauchement d'être à la hauteur !
Si c'est @J-M-L la remarque est inappropriée.
Disons que pour les « vieux » qui font du C depuis des années et qui sont passés aussi au C++, l’usage de certaines nouvelles tournures qui font exactement ce qui était fait avant fait « nouveau riche »
Mais bon c’est le sens de l’évolution du langage afin d’unifier la vision plus fortement typée, le rôle des constructeurs etc. personnellement ça ne me gêne donc pas même si je continuerai à utiliser = quand je fais une affectation triviale