[c] quesion bête digne d'un bon debutant

Fermé
boitaRytm Messages postés 14 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 22 octobre 2008 - 7 févr. 2007 à 21:02
 boitarytm - 8 févr. 2007 à 20:01
salut a tous

c'est simple est ce que dans la commande :

*P1 = *P2++ * *P3

le contenu de P2 est incrémenté dans la memoire, ou simplement pendant le calcul.

merci
A voir également:

4 réponses

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
7 févr. 2007 à 21:09
Bonjour,

*P1 = *P2++ * *P3

Phases :
1) P1 <---- *P2 + *P3
2) P2 <----- P2 +1

les expressions du type i++ sont des expressions post-fixés. Les variables sont incrémentés, puis leur valeur initiale est renvoyé.

Le contraire aurait été ++i

Salut !
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 févr. 2007 à 21:21
Salut,

t'es sur là?
1) P1 <---- *P2 + *P3

ce n'est pas plutôt?
1) P1 <---- *P2 * *P3 
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
7 févr. 2007 à 21:24
Waw pardon pour la boulette !! :)
Oui c'est bien ce que tu dis !

Merci ! et désolé pour la fausse explication !
0
boitaRytm Messages postés 14 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 22 octobre 2008 2
7 févr. 2007 à 21:43
donc en prenant un exemple

*P2= 2; *P3= 3;

*P1 = *P2++ * *P3 ;

on aurait P1= 6 et P2 =3 c'est ca??ps: je viens de me rendre compte que j'aurais simplement du essayer directement ..
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
7 févr. 2007 à 21:50
on aurait P1= 6 et P2 =3 c'est ca??ps:

Plus exactement *P1 = 6
Par contre pour P2 non.
*P2++ est différent de (*P2)++

En fait tu augmentes de quatre octets (pour un int) la valeur dans P2. Du coup P2 peut pointer vers n'importe quoi si tu n'as pas prévu le coup (tableau....)

Je pense que tu voulais mettre
*P2= 2; *P3= 3;

*P1 = (*P2)++ * *P3 ;

je viens de me rendre compte que j'aurais simplement du essayer directement ..
Effectivement, c'est ce que j'ai fait d'ailleurs pour être sûre de pas te dire de bétises cette fois-ci :p

:)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 févr. 2007 à 21:51
Oups,
Error!
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
7 févr. 2007 à 21:59
... ou comment tout mélanger !!!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 févr. 2007 à 22:07
c'est ma faute :-))
# perl -e '$p2=2;$p3=3;$p1=$p2++*$p3;print "\$p1=$p1 \$p2=$p2 \$p3=$p3\n"'
$p1=6 $p2=3 $p3=3


j'ai ajouté une étoile de plus ce qui m'a donné l'opérateur puissance :-))

0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
7 févr. 2007 à 22:11
Ok, la logique est respectée ! Mais vu que je n'y connais rien en perl je n'aurais rien vu :)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
7 févr. 2007 à 22:20
On s'en fiche que ça soit Perl ou un autre langage,
tu vois bien que j'exécute les opération demandées

lami20j@debian:~$ cat ekra.c
#include<stdio.h>

int main()
{
    int p1=0,p2=2,p3=3;

    printf("Avant\np1=%d p2=%d p3=%d\n",p1,p2,p3);
    p1=p2++*p3;
    printf("Après\np1=%d p2=%d p3=%d\n",p1,p2,p3);

    return 0;
}
lami20j@debian:~$ ./ekra
Avant
p1=0 p2=2 p3=3
Après
p1=6 p2=3 p3=3

0
boitarytm > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
8 févr. 2007 à 20:01
merci bien les gens!!
0