Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un exemple de cast utile sans pointeur

53 réponses
Avatar
Marc Boyer
Je me permets de vous demander un brin d'aide, encore.

Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

10 réponses

1 2 3 4 5
Avatar
kilobug

Je me permets de vous demander un brin d'aide, encore.
Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...


La conversion en float ? C'est un cast un peu particulier, mais un
simple calcul de moyenne qui prend en entrée des entiers et retourne
la moyenne sous forme de float, par exemple, nécessite un cast.

--
Gael Le Mignot "Kilobug" - - http://kilobug.free.fr
GSM : 06.71.47.18.22 (in France) ICQ UIN : 7299959
Fingerprint : 1F2C 9804 7505 79DF 95E6 7323 B66B F67B 7103 C5DA

Member of HurdFr: http://hurdfr.org - The GNU Hurd: http://hurd.gnu.org

Avatar
Antoine Leca
Marc Boyer va escriure:
Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...


Imprimer un size_t avec printf (de manière compatible ANSI 89).


Antoine

Avatar
Laurent Deniau
Marc Boyer wrote:
Je me permets de vous demander un brin d'aide, encore.

Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...

Marc Boyer


Cast en unsigned avant de faire des decalages.

a+, ld.

Avatar
Anthony
Marc Boyer wrote:

Je me permets de vous demander un brin d'aide, encore.

Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...


L'exemple tout bête peut être quand on fait une division de deux entiers
pour stocker le resultat vers un flottant. Si aucun cast n'est fait la
division est une division entière et le resultat n'est pas celui attendu.
Il faut donc caster au moins l'un des deux membres de la division :

:~$ more test.c && gcc -Wall -stdÉ9 test.c && a.out
#include <stdio.h>

int main() {
int a = 3, b = 5;
double c = b / a;
double d = (double) b/a;
printf("%.1lf %.1lfn", c, d);
}

1.0 1.7
:~$

Anthony
--
"I should have seen it would be this way
I should have known from the start what she's up to
When you have loved and you've lost someone
You know what it feels like to lose" -- The Rasmus

Avatar
Marc Boyer
Gaël Le Mignot wrote:
Je me permets de vous demander un brin d'aide, encore.
Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...


La conversion en float ? C'est un cast un peu particulier, mais un
simple calcul de moyenne qui prend en entrée des entiers et retourne
la moyenne sous forme de float, par exemple, nécessite un cast.


Voui, merci beaucoup ;-)

Marc Boyer, soulagé
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Marc Boyer
Laurent Deniau wrote:
Marc Boyer wrote:
Je me permets de vous demander un brin d'aide, encore.

Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...


Cast en unsigned avant de faire des decalages.


Je passe très vite sur les décalages...
Je vais juste leur montrer le coup de la moyenne,
ça me paraît suffisant en première approche.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Marc Boyer
In article <c0tcn0$1uc$, Antoine Leca wrote:
Marc Boyer va escriure:
Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...


Imprimer un size_t avec printf (de manière compatible ANSI 89).


Voui, mais là, j'aurais pas encore présenté size_t...
Je pense faire size_t avec l'allocation dynamique.

Merci de ta réponse,
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Jean-Marc Bourguet
Marc Boyer writes:

Laurent Deniau wrote:
Marc Boyer wrote:
Je me permets de vous demander un brin d'aide, encore.

Je cherche un exemple simple où la conversion par
cast est nécessaire. Je trouve rien sans devoir
introduire des pointeurs...


Cast en unsigned avant de faire des decalages.


Je passe très vite sur les décalages...


Et j'espere que tu leur dit que ce genre d'operation (manipulation de
bits) se fait sur des unsigned.

Je vais juste leur montrer le coup de la moyenne,
ça me paraît suffisant en première approche.


Les cas ou on a besoin de faire de la manipulation de bits sur des
donnees presentees sous autre forme que des unsigned sont tres rares.
Je ne donnerais donc pas cet exemple dans un contexte d'enseignement
de peur de montrer le mauvais exemple.

Autre chose exemple (dans la veine unsigned):

char c;
if (isprint((unsigned char) c)) {

}

Si on ne caste pas, on risque d'avoir la mauvaise reponse pour 'ÿ' si
char est signe.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
Marc Boyer
Jean-Marc Bourguet wrote:
Marc Boyer writes:

Cast en unsigned avant de faire des decalages.


Je passe très vite sur les décalages...


Et j'espere que tu leur dit que ce genre d'operation (manipulation de
bits) se fait sur des unsigned.


C'est écris juste sous le titre

4.3 Opérateurs binaire (bits à bits)
sur types entiers non-signés

de là à dire qu'ils le retiendrons...

Autre chose exemple (dans la veine unsigned):

char c;
if (isprint((unsigned char) c)) {

}

Si on ne caste pas, on risque d'avoir la mauvaise reponse pour 'ÿ' si
char est signe.


J'avoue ne pas m'attarder sur le caractère signé ou non de char.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(



Avatar
Jean-Marc Bourguet
Marc Boyer writes:

Jean-Marc Bourguet wrote:
Marc Boyer writes:

Cast en unsigned avant de faire des decalages.


Je passe très vite sur les décalages...


Et j'espere que tu leur dit que ce genre d'operation (manipulation de
bits) se fait sur des unsigned.


C'est écris juste sous le titre

4.3 Opérateurs binaire (bits à bits)
sur types entiers non-signés

de là à dire qu'ils le retiendrons...

Autre chose exemple (dans la veine unsigned):

char c;
if (isprint((unsigned char) c)) {

}

Si on ne caste pas, on risque d'avoir la mauvaise reponse pour 'ÿ' si
char est signe.


J'avoue ne pas m'attarder sur le caractère signé ou non de char.


Des que tu utilises isXXXX, il faut caster en non signe sinon il y a
un conflit avec le fait que ces fonctions sont definies aussi pour
EOF. De meme, il faut faire attention a ne pas stocker le resultat de
getch dans un char avant d'avoir comparer avec EOF.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org




1 2 3 4 5