Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1620 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  condition dans boucles for

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

condition dans boucles for

n°305132
grosmethos
Posté le 09-02-2003 à 22:18:04  profilanswer
 

salut
 
Je viens de trouver dans un exemple ceci:
 
for(;(*s1=*S2)!='\0';s1++,S2++)
 
pas d'initalisation =>ok
arithmetique pointeur s1++=>ok
 
par contre la condition :(;(*s1=*S2)!='\0' je la comprend pas....
je recopie s1 dans s2....comment le comprarer avec \0???
 

mood
Publicité
Posté le 09-02-2003 à 22:18:04  profilanswer
 

n°305135
mrbebert
Posté le 09-02-2003 à 22:26:04  profilanswer
 

*s1 = *s2, ca renvoie la valeur de *s2, que tu peux comparer avec le caractère '\0'.
 
C'est pareil que quand tu fais a = b = c

n°305137
grosmethos
Posté le 09-02-2003 à 22:28:41  profilanswer
 

je savais pas que l'affectation renvoyer quelque chose....est ce du fait des parenthèse ou dans toujours comme ça??
a=b=c renvoie c alors???

n°305138
grosmethos
Posté le 09-02-2003 à 22:31:22  profilanswer
 

bon j'vais me pioter lirais les reponses demains si d'autre reponses :)
 
Merci bien :)
 
@+

n°305139
Taz
bisounours-codeur
Posté le 09-02-2003 à 22:32:09  profilanswer
 

oui ca renvoie c

n°305142
mrbebert
Posté le 09-02-2003 à 22:35:12  profilanswer
 

mrBebert a écrit :

*s1 = *s2, ca renvoie la valeur de *s2, que tu peux comparer avec le caractère '\0'.
 
C'est pareil que quand tu fais a = b = c

c'est toujours comme ca.
Bon, y a surement des subtilités parfois.
 
Tiens, si a et c sont des entiers sur 4 octets et b sur 2 octets et qu'on fait a = b = c, est-ce que a récupère le contenu de b ou celui de c ?

n°305146
Carbon_14
Posté le 09-02-2003 à 22:52:15  profilanswer
 

Si on écrit  
if ((a = fonction(b, c)) == 0)
{
 
}
c'est comme
 
a = fonction(b, c);
if (a == 0)
{
 
}
 

n°305149
Taz
bisounours-codeur
Posté le 09-02-2003 à 22:56:27  profilanswer
 

quand je t'ai dit c,c 'est pour la valeur quand tout est du meme type. now, la version longue
 
l'affectation se passe de droite a gauche
 
donc quand tu fais
 a=b=c=d; c'est comme a=(b=(c=d));
 
mais a chaque fois l'expression parenthésée prend retourne la valeur de la l-value (la valeur à gauche)
 
donc  
 
a=b=c vaut donc a et est donc du meme type que a

n°305151
mrbebert
Posté le 09-02-2003 à 23:03:26  profilanswer
 

Ca prend la valeur de gauche ?
 
Donc, si j'ai a et c des entiers sur 4 octets, et b sur 2 octets.
c = 0x00FFFFFF;
a = b = c;
 
b, il vaut 0xFFFF. Et a, il vaut 0x0000FFFF ??

n°305153
Taz
bisounours-codeur
Posté le 09-02-2003 à 23:08:33  profilanswer
 

oui

mood
Publicité
Posté le 09-02-2003 à 23:08:33  profilanswer
 

n°305304
BifaceMcLe​OD
The HighGlandeur
Posté le 10-02-2003 à 10:58:14  profilanswer
 

grosmethos a écrit :


for(;(*s1=*S2)!='\0';s1++,S2++)


Quelle horreur... Quelle peut être l'utilité d'écrire ce genre de ligne de code, à part paumer celui qui la lit et rendre l'optimiseur du compilateur inopérant ?
Il aurait été plus simple d'écrire "strcpy(S2, s1);"...  
 
Notez au passage que ce joli petit bout de code contient un bug caché, à l'origine de nombreuses failles de sécurité des logiciels actuels...  :sarcastic:  

n°305678
Taz
bisounours-codeur
Posté le 10-02-2003 à 18:34:06  profilanswer
 

c'est le code de strcpy
 
sauf que j'aurais ecris  
while((*s1++=*s2++) != '\0));

n°305700
BifaceMcLe​OD
The HighGlandeur
Posté le 10-02-2003 à 19:22:10  profilanswer
 

++Taz a écrit :

c'est le code de strcpy
 
sauf que j'aurais ecris  
while((*s1++=*s2++) != '\0';));


Code que je trouve encore pire que le précédent...
 
Au passage, rien n'oblige à ce que cette fonction soit écrite en C, et, même si elle l'est, rien n'indique que l'implémentation de strcpy() est effectivement celle-là.

n°305701
Taz
bisounours-codeur
Posté le 10-02-2003 à 19:25:06  profilanswer
 

ben non, mais je crois me souvenir que dans l'implémentation que propose le K&R, c'est celle là  :D

n°305705
mrbebert
Posté le 10-02-2003 à 19:30:31  profilanswer
 

++Taz a écrit :

c'est le code de strcpy
 
sauf que j'aurais ecris  
while((*s1++=*s2++) != '\0));

Soyons fou : while (*s1++ = *s2++); , ca revient au même ?

n°305710
Taz
bisounours-codeur
Posté le 10-02-2003 à 19:45:24  profilanswer
 

oui

n°306023
Musaran
Cerveaulté
Posté le 11-02-2003 à 03:40:45  profilanswer
 

Code :
  1. a=b=c;
  2. //équivalent
  3. a=(b=c);
  4. //pas tout-à fait équivalent
  5. b=c;
  6. a=b;

Dire que a reçoit la valeur de b après que celui-ci ai reçu celle de c n'est pas tout-à-fait exact.
Strictement parlant, a se voit assigner la valeur de c convertie dans le type de b.
 
La nuance est subtile, puisque les termes de l'expression peuvent être évalués dans un ordre différent de leur utilsation par les opérateurs :

Code :
  1. i=t[i]=a;
  2. //cas du terme évalué avant
  3. t[i]=a;
  4. i=t[i];
  5. //cas du terme évalué après
  6. i=a;
  7. t[i]=a;

Alors, c'est pas génial le C ?
 
 
Ceci ne s'applique pas aux type utilisateurs en C++. Ouf !


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°306149
BifaceMcLe​OD
The HighGlandeur
Posté le 11-02-2003 à 10:38:26  profilanswer
 

++Taz a écrit :

ben non, mais je crois me souvenir que dans l'implémentation que propose le K&R, c'est celle là  :D  


Comme tu le dis très justement, le K&R propose cette implémentation, il ne l'impose pas.
 
Mais je me demande encore à quoi cela sert d'écrire des lignes dont le comportement n'est pas entièrement déterministe.  :sarcastic:
Exemple : Que fait celle ligne ?

Code :
  1. i = v[i++];


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  condition dans boucles for

 

Sujets relatifs
Bonsoir tt le monde, G un pb de boucles dans des boucles..[php] faire une condition ds une autre avec session
[C++] template et conditioncondition particuliere...
Comment faire une condition double[ PHP ] Perdu dans mes boucles > j'ai besoin de vous <
[PHP] Générer une condition if[php] boucles...
Problème de requête SQL avec condition "Where" en vb...[ACCESS] macro - syntaxe condition
Plus de sujets relatifs à : condition dans boucles for


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR