Bonjour,
j'aimerais assigner '+inf' =E0 une variable, et je me demandais
comment faire ca de mani=E8re =E9l=E9gante en C/C++, qui ne g=E9n=E9rerait
aucun warning, ni a la compilation, ni =E0 l'=E9xecution.
J'ai essay=E9 :
const double inf =3D std::pow(1024.0,1024.0);
mais c'est pas tr=E8s beau. De plus, ca g=E9n=E8re un warning =E0
l'=E9xecution,
avec bcc32.
Est-ce que quelqu'un a une id=E9e ?
Je pense que cela aide, car au niveau du stockage en memoire, les adresses des variables seront alignés sur un même multiple (ici 4 vraisemblablement), et que l'accès mémoire, même si tu dis qu'il est indéfini dans la norme, sera autorisé par le processeur. Ce n'est pas le cas, par exemple quand on essaye de lire un 'int' a une adresse impaire, ce qui fait planter le programme (au moins sur certains Sun) :
char tmp[5]; int a = *(int*)(tmp+1);
plante chez moi (sur sun , mais pas sur pc).
Je pense que cela aide, car au niveau du stockage en memoire, les
adresses des variables seront alignés sur un même multiple (ici 4
vraisemblablement), et que l'accès mémoire, même si tu dis qu'il est
indéfini dans la norme, sera autorisé par le processeur.
Ce n'est pas le cas, par exemple quand on essaye de lire un 'int' a une
adresse impaire, ce qui fait planter le programme (au moins sur
certains Sun) :
Je pense que cela aide, car au niveau du stockage en memoire, les adresses des variables seront alignés sur un même multiple (ici 4 vraisemblablement), et que l'accès mémoire, même si tu dis qu'il est indéfini dans la norme, sera autorisé par le processeur. Ce n'est pas le cas, par exemple quand on essaye de lire un 'int' a une adresse impaire, ce qui fait planter le programme (au moins sur certains Sun) :
char tmp[5]; int a = *(int*)(tmp+1);
plante chez moi (sur sun , mais pas sur pc).
Gabriel Dos Reis
"Tournevissette" writes:
| Je pense que cela aide, car au niveau du stockage en memoire, les | adresses des variables seront alignés sur un même multiple (ici 4 | vraisemblablement), et que l'accès mémoire, même si tu dis qu'il est | indéfini dans la norme, sera autorisé par le processeur.
| Ce n'est pas le cas, par exemple quand on essaye de lire un 'int' a une | adresse impaire, ce qui fait planter le programme (au moins sur | certains Sun) : | | char tmp[5]; | int a = *(int*)(tmp+1); | | plante chez moi (sur sun , mais pas sur pc).
| Je pense que cela aide, car au niveau du stockage en memoire, les
| adresses des variables seront alignés sur un même multiple (ici 4
| vraisemblablement), et que l'accès mémoire, même si tu dis qu'il est
| indéfini dans la norme, sera autorisé par le processeur.
| Ce n'est pas le cas, par exemple quand on essaye de lire un 'int' a une
| adresse impaire, ce qui fait planter le programme (au moins sur
| certains Sun) :
|
| char tmp[5];
| int a = *(int*)(tmp+1);
|
| plante chez moi (sur sun , mais pas sur pc).
| Je pense que cela aide, car au niveau du stockage en memoire, les | adresses des variables seront alignés sur un même multiple (ici 4 | vraisemblablement), et que l'accès mémoire, même si tu dis qu'il est | indéfini dans la norme, sera autorisé par le processeur.
| Ce n'est pas le cas, par exemple quand on essaye de lire un 'int' a une | adresse impaire, ce qui fait planter le programme (au moins sur | certains Sun) : | | char tmp[5]; | int a = *(int*)(tmp+1); | | plante chez moi (sur sun , mais pas sur pc).