writes:
[...]
| Sérieusement, au moins dans la partie STL (et c'est bien là où on
| trouve l'introduction des size_t au bout de bras), c'est bien la
| troisième motivation ci-dessus qui a joué, au moins en partie.
| N'oublie pas que Stepanov a beaucoup développé sur un PC, à un
| époque où les PC étaient des machines à 16 bits (mais que les
| pointeurs avec 32 bits). Vouloir un vector<char> avec 40000
| caractères (quand on peut avoir jusqu'à 640 Ko de mémoire totale)
| n'est pas si étrange que ça.
Je ne sais plus si c'est Stepanov qui a introduit ces size_type
non-signés. J'avais demandé à un grand expert qui a une horreur
incroyable de size_t comme type d'indice de tableau (dans la
bibliothèque), il m'a grosso modo répondu que c'était probablement
apparu un jour où il ne surveillait pas ce qui se passait dans le
LWG...
Bon, il était midi, on allait déjeuner et les discussions de café
n'ont pas forcément le poids d'une réponse traditionelle, alors si
jamais quelqu'un me cite, faites attention que c'était une discussion
de café :-)
[...]
| > Ceci dit, je crois que c'est un « erreur » qui est du même niveau
| > que les conversions implicites à perte de valeur :
| Pas du tout. Les conversions implicites à perte de valeur est une
| erreur de conception pûre et simple. Stroustrup n'avait pas le
| choix, à cause de la compatibilité C. En fait, je crois que l'«
| erreur » vient du fait que C dérivait au départ de B, qui lui
| n'avait pas de types du tout (et donc, pas de conversions). Mais le
| fait qu'il y a une excuse ne veut pas dire que ce n'est pas une
| erreur.
yep. Et en lisant le D&E et en faisant attention au champ lexical
qu'il utilise dans le chapitre « Overloading » (et si on connait en
général son ton réservé), on s'aperçoit qu'il n'apprécie vraiment pas
ces conversions chaotiques.
kanze@gabi-soft.fr writes:
[...]
| Sérieusement, au moins dans la partie STL (et c'est bien là où on
| trouve l'introduction des size_t au bout de bras), c'est bien la
| troisième motivation ci-dessus qui a joué, au moins en partie.
| N'oublie pas que Stepanov a beaucoup développé sur un PC, à un
| époque où les PC étaient des machines à 16 bits (mais que les
| pointeurs avec 32 bits). Vouloir un vector<char> avec 40000
| caractères (quand on peut avoir jusqu'à 640 Ko de mémoire totale)
| n'est pas si étrange que ça.
Je ne sais plus si c'est Stepanov qui a introduit ces size_type
non-signés. J'avais demandé à un grand expert qui a une horreur
incroyable de size_t comme type d'indice de tableau (dans la
bibliothèque), il m'a grosso modo répondu que c'était probablement
apparu un jour où il ne surveillait pas ce qui se passait dans le
LWG...
Bon, il était midi, on allait déjeuner et les discussions de café
n'ont pas forcément le poids d'une réponse traditionelle, alors si
jamais quelqu'un me cite, faites attention que c'était une discussion
de café :-)
[...]
| > Ceci dit, je crois que c'est un « erreur » qui est du même niveau
| > que les conversions implicites à perte de valeur :
| Pas du tout. Les conversions implicites à perte de valeur est une
| erreur de conception pûre et simple. Stroustrup n'avait pas le
| choix, à cause de la compatibilité C. En fait, je crois que l'«
| erreur » vient du fait que C dérivait au départ de B, qui lui
| n'avait pas de types du tout (et donc, pas de conversions). Mais le
| fait qu'il y a une excuse ne veut pas dire que ce n'est pas une
| erreur.
yep. Et en lisant le D&E et en faisant attention au champ lexical
qu'il utilise dans le chapitre « Overloading » (et si on connait en
général son ton réservé), on s'aperçoit qu'il n'apprécie vraiment pas
ces conversions chaotiques.
writes:
[...]
| Sérieusement, au moins dans la partie STL (et c'est bien là où on
| trouve l'introduction des size_t au bout de bras), c'est bien la
| troisième motivation ci-dessus qui a joué, au moins en partie.
| N'oublie pas que Stepanov a beaucoup développé sur un PC, à un
| époque où les PC étaient des machines à 16 bits (mais que les
| pointeurs avec 32 bits). Vouloir un vector<char> avec 40000
| caractères (quand on peut avoir jusqu'à 640 Ko de mémoire totale)
| n'est pas si étrange que ça.
Je ne sais plus si c'est Stepanov qui a introduit ces size_type
non-signés. J'avais demandé à un grand expert qui a une horreur
incroyable de size_t comme type d'indice de tableau (dans la
bibliothèque), il m'a grosso modo répondu que c'était probablement
apparu un jour où il ne surveillait pas ce qui se passait dans le
LWG...
Bon, il était midi, on allait déjeuner et les discussions de café
n'ont pas forcément le poids d'une réponse traditionelle, alors si
jamais quelqu'un me cite, faites attention que c'était une discussion
de café :-)
[...]
| > Ceci dit, je crois que c'est un « erreur » qui est du même niveau
| > que les conversions implicites à perte de valeur :
| Pas du tout. Les conversions implicites à perte de valeur est une
| erreur de conception pûre et simple. Stroustrup n'avait pas le
| choix, à cause de la compatibilité C. En fait, je crois que l'«
| erreur » vient du fait que C dérivait au départ de B, qui lui
| n'avait pas de types du tout (et donc, pas de conversions). Mais le
| fait qu'il y a une excuse ne veut pas dire que ce n'est pas une
| erreur.
yep. Et en lisant le D&E et en faisant attention au champ lexical
qu'il utilise dans le chapitre « Overloading » (et si on connait en
général son ton réservé), on s'aperçoit qu'il n'apprécie vraiment pas
ces conversions chaotiques.
typa:
[...]Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types). On peut les implémenter au moyens des classes, mais le
résultat est assez lourd. Alors, en général, on s'en passe.
(Peut-être à tort, je ne sais pas. Un template Subrange< typename T,
T, T > ne doit pas poser de grands problèmes.)
Peut-être y a-t-il un problème de livre et/ou d'enseignement à vouloir
présenter immédiatement les applications lourdes des classes, à partir
d'exemples (les chats, les avions) dont la traduction informatique est
peu convaincante. Bon, d'autres exemples sont quand même mieux
choisis, et certains livres n'ont pas ce défaut.
J'aime bien la première phrase sur les classes dans un référence IBM :
"A class is a mechanism for creating user-defined data types."
Question:
Le fait qu'il y ait en C++ des types qui ne sont pas des classes
(contrairement à Java par exemple) permet-il des choses impossibles
dans le cas contraire ?
Je suppose que si la réponse est "oui", c'est vers les applications
bas niveau que ça se situera.
Mais je ne pense pas, c'est plus la notion de pointeur et l'opérateur
adresse & qui rend le langage si universel.
kanze@gabi-soft.fr typa:
[...]
Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types). On peut les implémenter au moyens des classes, mais le
résultat est assez lourd. Alors, en général, on s'en passe.
(Peut-être à tort, je ne sais pas. Un template Subrange< typename T,
T, T > ne doit pas poser de grands problèmes.)
Peut-être y a-t-il un problème de livre et/ou d'enseignement à vouloir
présenter immédiatement les applications lourdes des classes, à partir
d'exemples (les chats, les avions) dont la traduction informatique est
peu convaincante. Bon, d'autres exemples sont quand même mieux
choisis, et certains livres n'ont pas ce défaut.
J'aime bien la première phrase sur les classes dans un référence IBM :
"A class is a mechanism for creating user-defined data types."
Question:
Le fait qu'il y ait en C++ des types qui ne sont pas des classes
(contrairement à Java par exemple) permet-il des choses impossibles
dans le cas contraire ?
Je suppose que si la réponse est "oui", c'est vers les applications
bas niveau que ça se situera.
Mais je ne pense pas, c'est plus la notion de pointeur et l'opérateur
adresse & qui rend le langage si universel.
typa:
[...]Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types). On peut les implémenter au moyens des classes, mais le
résultat est assez lourd. Alors, en général, on s'en passe.
(Peut-être à tort, je ne sais pas. Un template Subrange< typename T,
T, T > ne doit pas poser de grands problèmes.)
Peut-être y a-t-il un problème de livre et/ou d'enseignement à vouloir
présenter immédiatement les applications lourdes des classes, à partir
d'exemples (les chats, les avions) dont la traduction informatique est
peu convaincante. Bon, d'autres exemples sont quand même mieux
choisis, et certains livres n'ont pas ce défaut.
J'aime bien la première phrase sur les classes dans un référence IBM :
"A class is a mechanism for creating user-defined data types."
Question:
Le fait qu'il y ait en C++ des types qui ne sont pas des classes
(contrairement à Java par exemple) permet-il des choses impossibles
dans le cas contraire ?
Je suppose que si la réponse est "oui", c'est vers les applications
bas niveau que ça se situera.
Mais je ne pense pas, c'est plus la notion de pointeur et l'opérateur
adresse & qui rend le langage si universel.
wrote:Pour les classes on conseille de s'inspirer de "l'univers du
problème" ; serait-ce une tare de faire de même pour d'autres types,
encore plus basiques ? Quand une variable représente un entier qui
n'a aucun sens autre que positif, cela me révulse absolument qu'il
ne soit pas unsigned.
Tu veux dire que ça te révulse qu'il puisse représenter les valeurs
en dehors du domaine. Moi aussi. Par exemple, si je veux un type qui
représente un dé, je ne veux pas non plus qu'il puisse représenter
un 0, ou un 100.
Si tu faisais des jeux de rôle, un dé valant 0 ou 100 ne te ferait pas
peur... ;)Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types). On peut les implémenter au moyens des classes, mais le
résultat est assez lourd. Alors, en général, on s'en passe.
(Peut-être à tort, je ne sais pas. Un template Subrange< typename T,
T, T > ne doit pas poser de grands problèmes.)
Je pense que ce n'est pas trivial quand même. En particulier :
Subrange<int, 0, 10> a, b;
Quel doit être le type de a-b ? Subrange<int, 0, 10>, ou bien
Subrange<int, -10, 10> ?
kanze@gabi-soft.fr wrote:
Pour les classes on conseille de s'inspirer de "l'univers du
problème" ; serait-ce une tare de faire de même pour d'autres types,
encore plus basiques ? Quand une variable représente un entier qui
n'a aucun sens autre que positif, cela me révulse absolument qu'il
ne soit pas unsigned.
Tu veux dire que ça te révulse qu'il puisse représenter les valeurs
en dehors du domaine. Moi aussi. Par exemple, si je veux un type qui
représente un dé, je ne veux pas non plus qu'il puisse représenter
un 0, ou un 100.
Si tu faisais des jeux de rôle, un dé valant 0 ou 100 ne te ferait pas
peur... ;)
Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types). On peut les implémenter au moyens des classes, mais le
résultat est assez lourd. Alors, en général, on s'en passe.
(Peut-être à tort, je ne sais pas. Un template Subrange< typename T,
T, T > ne doit pas poser de grands problèmes.)
Je pense que ce n'est pas trivial quand même. En particulier :
Subrange<int, 0, 10> a, b;
Quel doit être le type de a-b ? Subrange<int, 0, 10>, ou bien
Subrange<int, -10, 10> ?
wrote:Pour les classes on conseille de s'inspirer de "l'univers du
problème" ; serait-ce une tare de faire de même pour d'autres types,
encore plus basiques ? Quand une variable représente un entier qui
n'a aucun sens autre que positif, cela me révulse absolument qu'il
ne soit pas unsigned.
Tu veux dire que ça te révulse qu'il puisse représenter les valeurs
en dehors du domaine. Moi aussi. Par exemple, si je veux un type qui
représente un dé, je ne veux pas non plus qu'il puisse représenter
un 0, ou un 100.
Si tu faisais des jeux de rôle, un dé valant 0 ou 100 ne te ferait pas
peur... ;)Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types). On peut les implémenter au moyens des classes, mais le
résultat est assez lourd. Alors, en général, on s'en passe.
(Peut-être à tort, je ne sais pas. Un template Subrange< typename T,
T, T > ne doit pas poser de grands problèmes.)
Je pense que ce n'est pas trivial quand même. En particulier :
Subrange<int, 0, 10> a, b;
Quel doit être le type de a-b ? Subrange<int, 0, 10>, ou bien
Subrange<int, -10, 10> ?
a écrit dans le message news:Tu veux dire que ça te révulse qu'il puisse représenter les valeurs
en dehors du domaine. Moi aussi. Par exemple, si je veux un type qui
représente un dé, je ne veux pas non plus qu'il puisse représenter
un 0, ou un 100.
Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types).
Certes je regrette beaucoup le type intervalle du Pascal. Ceci dit, je
ne suis réaliste, travaillons avec ce qu'offre le langage.
Ce que je dis simplement, c'est que s'il existe un type, alors c'est
vraiment bizare de s'en passer.
A moins que le langage ne nous trompe ;
si les "unsigned int" et leurs opérations autorisées (par le langage
!) ne se comportent pas comme des entiers sans signe, alors ce n'est
plus de café qu'il faut parler, mais de pousse-café :-)
Etre averti des problèmes d'implémentation numérique (et toi tu l'es
!), c'est bien. Mais prenons garde à ne pas penser les nombres à
partir de leur implémentation.
Un entier sans signe, cela a un sens.
<kanze@gabi-soft.fr> a écrit dans le message news:
d6652001.0405252353.3cccafaa@posting.google.com...
Tu veux dire que ça te révulse qu'il puisse représenter les valeurs
en dehors du domaine. Moi aussi. Par exemple, si je veux un type qui
représente un dé, je ne veux pas non plus qu'il puisse représenter
un 0, ou un 100.
Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types).
Certes je regrette beaucoup le type intervalle du Pascal. Ceci dit, je
ne suis réaliste, travaillons avec ce qu'offre le langage.
Ce que je dis simplement, c'est que s'il existe un type, alors c'est
vraiment bizare de s'en passer.
A moins que le langage ne nous trompe ;
si les "unsigned int" et leurs opérations autorisées (par le langage
!) ne se comportent pas comme des entiers sans signe, alors ce n'est
plus de café qu'il faut parler, mais de pousse-café :-)
Etre averti des problèmes d'implémentation numérique (et toi tu l'es
!), c'est bien. Mais prenons garde à ne pas penser les nombres à
partir de leur implémentation.
Un entier sans signe, cela a un sens.
a écrit dans le message news:Tu veux dire que ça te révulse qu'il puisse représenter les valeurs
en dehors du domaine. Moi aussi. Par exemple, si je veux un type qui
représente un dé, je ne veux pas non plus qu'il puisse représenter
un 0, ou un 100.
Malheureusement, C/C++ n'a pas des types à sous-étendu (subrange
types).
Certes je regrette beaucoup le type intervalle du Pascal. Ceci dit, je
ne suis réaliste, travaillons avec ce qu'offre le langage.
Ce que je dis simplement, c'est que s'il existe un type, alors c'est
vraiment bizare de s'en passer.
A moins que le langage ne nous trompe ;
si les "unsigned int" et leurs opérations autorisées (par le langage
!) ne se comportent pas comme des entiers sans signe, alors ce n'est
plus de café qu'il faut parler, mais de pousse-café :-)
Etre averti des problèmes d'implémentation numérique (et toi tu l'es
!), c'est bien. Mais prenons garde à ne pas penser les nombres à
partir de leur implémentation.
Un entier sans signe, cela a un sens.
Je crois que je n'ai pas dit les choses correctement. En disant
« quand il en a besoin » je voulais dire « quand c'est tout
ce dont il a besoin ». Si tu as absolument besoin de la
division entière, je suis sûr que tu la mettras puisque sinon
ton programme ne fonctionnera pas. Mais si la division entière
est suffisante (est tout ce dont tu as besoin), alors que /
(division réelle) fonctionne aussi, tu vas vraiment penser à
mettre ?
Comme ça, là, je ne vois pas de cas (hors les cas triviaux ou
on fait la division de deux entiers dont le dividende est un
multiple du diviseur) ou la division entière et la division
réelle ont des résultats équivalents.
Mais si je tombe sur un tel cas, je pense qu'en effet risque
d'utiliser la division réelle et non pas la division entière.
Je crois que je n'ai pas dit les choses correctement. En disant
« quand il en a besoin » je voulais dire « quand c'est tout
ce dont il a besoin ». Si tu as absolument besoin de la
division entière, je suis sûr que tu la mettras puisque sinon
ton programme ne fonctionnera pas. Mais si la division entière
est suffisante (est tout ce dont tu as besoin), alors que /
(division réelle) fonctionne aussi, tu vas vraiment penser à
mettre ?
Comme ça, là, je ne vois pas de cas (hors les cas triviaux ou
on fait la division de deux entiers dont le dividende est un
multiple du diviseur) ou la division entière et la division
réelle ont des résultats équivalents.
Mais si je tombe sur un tel cas, je pense qu'en effet risque
d'utiliser la division réelle et non pas la division entière.
Je crois que je n'ai pas dit les choses correctement. En disant
« quand il en a besoin » je voulais dire « quand c'est tout
ce dont il a besoin ». Si tu as absolument besoin de la
division entière, je suis sûr que tu la mettras puisque sinon
ton programme ne fonctionnera pas. Mais si la division entière
est suffisante (est tout ce dont tu as besoin), alors que /
(division réelle) fonctionne aussi, tu vas vraiment penser à
mettre ?
Comme ça, là, je ne vois pas de cas (hors les cas triviaux ou
on fait la division de deux entiers dont le dividende est un
multiple du diviseur) ou la division entière et la division
réelle ont des résultats équivalents.
Mais si je tombe sur un tel cas, je pense qu'en effet risque
d'utiliser la division réelle et non pas la division entière.
a écrit dans le message de
news:"Michel Michaud" wrote in message
news:<EJJsc.27786$...C'est à peu près ce que je pense aussi, mais les nombreuses
discussions (sur clc++m par exemple) montrent bien que ce n'est
pas complètement noir ou blanc. En particulier, le fait que la
bibliothèque standard regorge de unsigned (pour aucune des raisons
citées plus haut) indique qu'au moins quelques grands experts ont,
pendant un certain temps, pensé autrement.
Ou que la bibliothèque n'est pas le produit des grands experts:-).
Sérieusement, au moins dans la partie STL (et c'est bien là où on
trouve l'introduction des size_t au bout de bras), c'est bien la
troisième motivation ci-dessus qui a joué, au moins en partie.
[... i.e. un bit de plus ...]N'oublie pas que Stepanov a beaucoup développé sur un PC, à un
époque où les PC étaient des machines à 16 bits (mais que les
pointeurs avec 32 bits). Vouloir un vector<char> avec 40000
caractères (quand on peut avoir jusqu'à 640 Ko de mémoire totale)
n'est pas si étrange que ça.
Hum. Et pourquoi pas simplement prendre un long (minimum 32 bits tout
le temps) pour pouvoir avoir un vecteur de 80 000 éléments ou plus...
Avec 640K, on peut aller bien plus aussi. Je ne vois pas pourquoi 40
000 semblerait plus utile que 80 000...
Par ailleurs, si je me rappelle bien, à cause des types pour les
distances entre les éléments (ou quelque chose du genre), on ne peut
pas avoir plus du nombre d'éléments du type signé (mais je peux me
tromper...).
<kanze@gabi-soft.fr> a écrit dans le message de
news:d6652001.0405252321.475f7fe7@posting.google.com...
"Michel Michaud" <mm@gdzid.com> wrote in message
news:<EJJsc.27786$tb4.956273@news20.bellglobal.com>...
C'est à peu près ce que je pense aussi, mais les nombreuses
discussions (sur clc++m par exemple) montrent bien que ce n'est
pas complètement noir ou blanc. En particulier, le fait que la
bibliothèque standard regorge de unsigned (pour aucune des raisons
citées plus haut) indique qu'au moins quelques grands experts ont,
pendant un certain temps, pensé autrement.
Ou que la bibliothèque n'est pas le produit des grands experts:-).
Sérieusement, au moins dans la partie STL (et c'est bien là où on
trouve l'introduction des size_t au bout de bras), c'est bien la
troisième motivation ci-dessus qui a joué, au moins en partie.
[... i.e. un bit de plus ...]
N'oublie pas que Stepanov a beaucoup développé sur un PC, à un
époque où les PC étaient des machines à 16 bits (mais que les
pointeurs avec 32 bits). Vouloir un vector<char> avec 40000
caractères (quand on peut avoir jusqu'à 640 Ko de mémoire totale)
n'est pas si étrange que ça.
Hum. Et pourquoi pas simplement prendre un long (minimum 32 bits tout
le temps) pour pouvoir avoir un vecteur de 80 000 éléments ou plus...
Avec 640K, on peut aller bien plus aussi. Je ne vois pas pourquoi 40
000 semblerait plus utile que 80 000...
Par ailleurs, si je me rappelle bien, à cause des types pour les
distances entre les éléments (ou quelque chose du genre), on ne peut
pas avoir plus du nombre d'éléments du type signé (mais je peux me
tromper...).
a écrit dans le message de
news:"Michel Michaud" wrote in message
news:<EJJsc.27786$...C'est à peu près ce que je pense aussi, mais les nombreuses
discussions (sur clc++m par exemple) montrent bien que ce n'est
pas complètement noir ou blanc. En particulier, le fait que la
bibliothèque standard regorge de unsigned (pour aucune des raisons
citées plus haut) indique qu'au moins quelques grands experts ont,
pendant un certain temps, pensé autrement.
Ou que la bibliothèque n'est pas le produit des grands experts:-).
Sérieusement, au moins dans la partie STL (et c'est bien là où on
trouve l'introduction des size_t au bout de bras), c'est bien la
troisième motivation ci-dessus qui a joué, au moins en partie.
[... i.e. un bit de plus ...]N'oublie pas que Stepanov a beaucoup développé sur un PC, à un
époque où les PC étaient des machines à 16 bits (mais que les
pointeurs avec 32 bits). Vouloir un vector<char> avec 40000
caractères (quand on peut avoir jusqu'à 640 Ko de mémoire totale)
n'est pas si étrange que ça.
Hum. Et pourquoi pas simplement prendre un long (minimum 32 bits tout
le temps) pour pouvoir avoir un vecteur de 80 000 éléments ou plus...
Avec 640K, on peut aller bien plus aussi. Je ne vois pas pourquoi 40
000 semblerait plus utile que 80 000...
Par ailleurs, si je me rappelle bien, à cause des types pour les
distances entre les éléments (ou quelque chose du genre), on ne peut
pas avoir plus du nombre d'éléments du type signé (mais je peux me
tromper...).
"Alain Naigeon" writes:
| je ne suis réaliste, travaillons avec ce qu'offre le langage. Ce que je
dis
| simplement, c'est que s'il existe un type, alors c'est vraiment bizare
| de s'en passer.
Ce serait vraiment bizarre de se servir d'un type juste parce qu'il
existe non parce que sa sémantique convient.
"Alain Naigeon" <anaigeon@free.fr> writes:
| je ne suis réaliste, travaillons avec ce qu'offre le langage. Ce que je
dis
| simplement, c'est que s'il existe un type, alors c'est vraiment bizare
| de s'en passer.
Ce serait vraiment bizarre de se servir d'un type juste parce qu'il
existe non parce que sa sémantique convient.
"Alain Naigeon" writes:
| je ne suis réaliste, travaillons avec ce qu'offre le langage. Ce que je
dis
| simplement, c'est que s'il existe un type, alors c'est vraiment bizare
| de s'en passer.
Ce serait vraiment bizarre de se servir d'un type juste parce qu'il
existe non parce que sa sémantique convient.
Dans news:c9470d$ohu$, VincentJe crois que je n'ai pas dit les choses correctement. En disant
« quand il en a besoin » je voulais dire « quand c'est tout
ce dont il a besoin ». Si tu as absolument besoin de la
division entière, je suis sûr que tu la mettras puisque sinon
ton programme ne fonctionnera pas. Mais si la division entière
est suffisante (est tout ce dont tu as besoin), alors que /
(division réelle) fonctionne aussi, tu vas vraiment penser à
mettre ?
Comme ça, là, je ne vois pas de cas (hors les cas triviaux ou
on fait la division de deux entiers dont le dividende est un
multiple du diviseur) ou la division entière et la division
réelle ont des résultats équivalents.
Non, mais quand tu remets la valeur dans un entier oui !
Dans news:c9470d$ohu$1@news-reader4.wanadoo.fr, Vincent
Je crois que je n'ai pas dit les choses correctement. En disant
« quand il en a besoin » je voulais dire « quand c'est tout
ce dont il a besoin ». Si tu as absolument besoin de la
division entière, je suis sûr que tu la mettras puisque sinon
ton programme ne fonctionnera pas. Mais si la division entière
est suffisante (est tout ce dont tu as besoin), alors que /
(division réelle) fonctionne aussi, tu vas vraiment penser à
mettre ?
Comme ça, là, je ne vois pas de cas (hors les cas triviaux ou
on fait la division de deux entiers dont le dividende est un
multiple du diviseur) ou la division entière et la division
réelle ont des résultats équivalents.
Non, mais quand tu remets la valeur dans un entier oui !
Dans news:c9470d$ohu$, VincentJe crois que je n'ai pas dit les choses correctement. En disant
« quand il en a besoin » je voulais dire « quand c'est tout
ce dont il a besoin ». Si tu as absolument besoin de la
division entière, je suis sûr que tu la mettras puisque sinon
ton programme ne fonctionnera pas. Mais si la division entière
est suffisante (est tout ce dont tu as besoin), alors que /
(division réelle) fonctionne aussi, tu vas vraiment penser à
mettre ?
Comme ça, là, je ne vois pas de cas (hors les cas triviaux ou
on fait la division de deux entiers dont le dividende est un
multiple du diviseur) ou la division entière et la division
réelle ont des résultats équivalents.
Non, mais quand tu remets la valeur dans un entier oui !
wrote:Pour les classes on conseille de s'inspirer de "l'univers du problème"
; serait-ce une tare de faire de même pour d'autres types, encore plus
basiques ? Quand une variable représente un entier qui n'a aucun sens
autre que positif, cela me révulse absolument qu'il ne soit pas
unsigned.
kanze@gabi-soft.fr wrote:
Pour les classes on conseille de s'inspirer de "l'univers du problème"
; serait-ce une tare de faire de même pour d'autres types, encore plus
basiques ? Quand une variable représente un entier qui n'a aucun sens
autre que positif, cela me révulse absolument qu'il ne soit pas
unsigned.
wrote:Pour les classes on conseille de s'inspirer de "l'univers du problème"
; serait-ce une tare de faire de même pour d'autres types, encore plus
basiques ? Quand une variable représente un entier qui n'a aucun sens
autre que positif, cela me révulse absolument qu'il ne soit pas
unsigned.