int et long

int et long - C++ - Programmation

Marsh Posté le 27-11-2002 à 11:23:45    

si on declare x comme une variable de type long ,est-ce que l'initialisation x=1 est incorrecte?
si oui que faut-il faire,un transtypage ou autre ?
merci de me  repondre.

Reply

Marsh Posté le 27-11-2002 à 11:23:45   

Reply

Marsh Posté le 27-11-2002 à 11:34:45    

x=1l je dirais, mais si tu mets juste 1 ça passe sans problèmes


Message édité par antp le 27-11-2002 à 11:35:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-11-2002 à 11:35:40    

Pour etre tres rigoureux il faudrait faire i=1L; il me semble.

Reply

Marsh Posté le 27-11-2002 à 11:53:05    

ca veut dire qu'il faut faire x=(long)1  ?

Reply

Marsh Posté le 27-11-2002 à 11:58:13    

bobbyf a écrit a écrit :

ca veut dire qu'il faut faire x=(long)1  ?




 
là tu transformes l'integer 1 en long puis tu le mets dans x
 
avec x = 1L tu mets le long 1 dans x


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-11-2002 à 12:45:04    

excuse de reposer la question mais en c t'ecris  ca commet x=1l ?

Reply

Marsh Posté le 27-11-2002 à 12:47:19    

x = 1L;
 
simplement


Message édité par antp le 27-11-2002 à 12:47:43

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-11-2002 à 13:45:09    

antp a écrit a écrit :

 
 
là tu transformes l'integer 1 en long puis tu le mets dans x
 
avec x = 1L tu mets le long 1 dans x




 
pour les litterales :
1 est un int
1U est un unsigned int
1L est un long
1. est un double
1.0F est un float...
 
ceci dit sur bcp de systemes int et long sont identiques...
bcp, mais pas tous...

Reply

Marsh Posté le 27-11-2002 à 16:04:30    

Et comme le C n'offre pas un typage vraiment fort, la constante littérale 1 a un peu tous ces types-là à la fois... :sarcastic:

Reply

Marsh Posté le 27-11-2002 à 17:46:42    

BifaceMcLeOD a écrit a écrit :

Et comme le C n'offre pas un typage vraiment fort, la constante littérale 1 a un peu tous ces types-là à la fois... :sarcastic:  




 
Un peu seulement... avec des suprise a la clef si on n'y prend pas trop garde... (divisions entieres...)

Reply

Marsh Posté le 27-11-2002 à 17:46:42   

Reply

Marsh Posté le 27-11-2002 à 17:48:27    

ouaip. Exemple récent, j'avais besoin de la valeur "infini":
1/0 = erreur, division par zéro
1.0/0.0 = infini


Message édité par antp le 27-11-2002 à 17:49:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-11-2002 à 19:56:48    

BifaceMcLeOD a écrit a écrit :

Et comme le C n'offre pas un typage vraiment fort, la constante littérale 1 a un peu tous ces types-là à la fois... :sarcastic:  




Bah, moi je dirais que c'est un int. En C++, chez moi avec g++, le bout  de code suivant
 

Code :
  1. #include <iostream>
  2. int main()
  3. {
  4.   std::cout << (typeid(1L)==typeid(int)) << std::endl;
  5.   std::cout << (typeid(1)==typeid(int)) << std::endl;
  6. }

 
 
affiche:
0
1
 

Reply

Marsh Posté le 28-11-2002 à 00:15:07    

Plus simple:

Code :
  1. std::cout << typeid(1 ).name() << std::endl;
  2. std::cout << typeid(1L).name() << std::endl;


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 28-11-2002 à 13:25:11    

fabsk a écrit a écrit :

 
Bah, moi je dirais que c'est un int. En C++, chez moi avec g++, le bout  de code suivant
 

Code :
  1. #include <iostream>
  2. int main()
  3. {
  4.   std::cout << (typeid(1L)==typeid(int)) << std::endl;
  5.   std::cout << (typeid(1)==typeid(int)) << std::endl;
  6. }

 
affiche:
0
1




Alors explique-moi pourquoi le code suivant compile (et fonctionne) :

Code :
  1. void toto(long l)
  2. {
  3.   cout << "toto";
  4. }
  5. int main(void)
  6. {
  7.   toto(1);
  8.   return 0;
  9. }



Message édité par BifaceMcLeOD le 28-11-2002 à 13:25:33
Reply

Marsh Posté le 28-11-2002 à 17:03:35    

BifaceMcLeOD a écrit a écrit :

 
Alors explique-moi pourquoi le code suivant compile (et fonctionne) :

Code :
  1. void toto(long l)
  2. {
  3.   cout << "toto";
  4. }
  5. int main(void)
  6. {
  7.   toto(1);
  8.   return 0;
  9. }


 




 
Parce qu'il y a convertion due a la non ambuguité...
le code C++ suivant ne compile plus...
 

Code :
  1. void toto(long l)
  2. {
  3.   cout << "toto int";
  4. }
  5. void toto(double l)
  6. {
  7.   cout << "toto double";
  8. }
  9. int main(void)
  10. {
  11.   toto(1);
  12.   return 0;
  13. }


Message édité par BENB le 28-11-2002 à 17:04:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed