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

  FORUM HardWare.fr
  Programmation
  C

  [C] débutant a=b différent de b=a ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] débutant a=b différent de b=a ?

n°2136513
caps lock
Posté le 14-04-2012 à 06:51:25  profilanswer
 

Bonjour,
 
Je viens de réaliser un code assez simple qui me permet de dupliquer un tableau. J'ai longtemps cherché où était mon erreur et je me suis rendu compte que l'ordre avait une importance dans une équation d'égalité :

Code :
  1. void copie(int tableau[], int tableau2[], int taille)
  2. {
  3.     int i=0;
  4.     for ( i = 0 ; i < taille ; i++)
  5.     {
  6.         tableau2[i]=tableau[i];   // C'est ici que survenait mon problème
  7.     }
  8. }


 
Donc ma question est pour quoi :

Code :
  1. tableau[i]=tableau2[i];


me sort un résultat différent que

Code :
  1. tableau2[i]=tableau[i];

mood
Publicité
Posté le 14-04-2012 à 06:51:25  profilanswer
 

n°2136520
el muchach​o
Comfortably Numb
Posté le 14-04-2012 à 09:10:37  profilanswer
 

Parce que le signe = en informatique n'a pas du tout le sens du signe = en mathématique.
C'est une assignation: "j'assigne la valeur à droite du = à la valeur à gauche du signe =". Cette opération n'est en aucun cas commutative.
C'est même pour ça que la notation dans certains livres et langages, cette assignation est notée <-- (flèche vers la gauche) et non =.

 

Il ne faut jamais oublier que derrière un algo en informatique, il y a des cases mémoires, et quand tu copies un tableau A vers un tableau B, tu copies réellement le contenu des cases mémoires de A dans les cases mémoires de B. Il faut donc être sûr que:
1. A et B aient été correctement alloués/réservés
2. B ait une taille au moins égale à A
3. A et B ne se chevauchent pas sous peine de mauvaises surprises. Normalement ce point est garanti par 1, mais lors de l'utilisation des pointeurs, on peut facilement se planter.
On voit bien dès lors que cette opération n'a rien à voir avec un = mathématique.


Message édité par el muchacho le 14-04-2012 à 09:49:59
n°2136543
Elmoricq
Modérateur
Posté le 14-04-2012 à 13:11:03  profilanswer
 

Pour faire simple :
"="  > opérateur d'assignation (a = b : "j'assigne le contenu de b dans a" )
"==" > opérateur de test d'égalité

n°2136587
caps lock
Posté le 14-04-2012 à 19:51:20  profilanswer
 

Merci ça aide!


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

  [C] débutant a=b différent de b=a ?

 

Sujets relatifs
analyseur lexical en CCompilateur C++ en java
LANCER C++ A PARTIR DE JAVAproblème de passage de C au C++
Triac et µC[C# / LINQ to XML] Générer des balises contenant des ':'
Retour fonction CSilverlight C# problème Wrappanel
[C#] REST, méthode POST, valeur du stream, doit il être encodé ?optimisation SSE pour du code C (auto ou inline) [résolu]
Plus de sujets relatifs à : [C] débutant a=b différent de b=a ?


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