probleme avec des signed ou unsigned double
Salut,
je souhaiterais avoir une explication complementaire sur la partie concernant les types de données du cours de Christian Casteyde, surtout à propos des types signed et unsigned, j'ai pas vraiment compris la différence et je rencontre de drôle de chose quand je programme dûs à l'utilisation de type signed ou unsigned.
Je dois dans un algorithme génére une matrice (j'utilise la classe matrix de boost::ublas)
Pour cela j' ecris :
Code:
1 2 3 4 5
|
matrix<signed double> a ( n, n);
for(unsigned int i=0; i<a.size1(); ++ i)
{for(unsigned int j=0; j<a.size2(); ++ j)
a(i,j)=1-2*i-j*(i+j)*i*j;} |
ce qui me permet degenerer une matrice avec des coef negatifs. Donc si j'utilise matrix<signed double> ok, ca marche. par contre si j'utilise matrix<double>, ca ne marche pas, je n'ai pas de nombre negatifs et par defaut il me met le plus grand nombre qu il peut calculer.
Mais lorsque je defini une fonction et que je crée une fonction dans une autre fichier.h et que je compile, il me dit que signed ne peut pas être utilisé avec double... et il me pose un probleme avec le calcul d'une racine carré sur un signed double (le nombre sous la racine est assurement positif... ;) )
Par contre je precise que je ne rencontre pas tout ces problemes si j utilise des float dans ma fonction, je suis par contre oblige de generer une matrice avec des signed float pour avoir les coefs negatifs.
Voilà, je vous remercie en attendant vos explications !