01net    Web


Actuellement en ligne : 290 Utilisateurs dont 15 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@  
01net > Forum de 01net > Programmation et développement > C/C++
> Déclaration de variables
Auteur
Message
 
<     1       >
bigmonster
  My name is Dr watson
  :-)
      ?   @     Posté le 19/12/2007 00:01:59  
Voter pour ce message
Bonsoir tout le monde,
je suis en train de lire un bouquin de C (La bible du programmeur en C/C++/C#, je sais aps ce que ça vaut), et je comprends pas un truc. Est-ce-qu'il y a vraiment encore un intérêt à utiliser des variables contenant une petite plage de données : du genre un int au lieu d'un long. Sur les vieux PC je veux bien, mais vu la mémoire qu'on a aujourd'hui est-ce encore nécessaire de faire une distinction ?
J'avais une autre question, sur le bouquin il définisse une variable float ainsi :
float rayon = 123,45;
alors que j'ai toujours appris qu'on mettait des points au lieu des virgules en C. Je me trompe ?

Merci d'avance de m'éclairer, parce que là je me demande si ce bouquin dis pas vraiment que des idioties...
-------
La vraie liberté c'est de pouvoir toute chose sur soi
edfed
  
  :-)
      ?   @     Posté le 19/12/2007 07:17:53  
Voter pour ce message
hum, tu as le net et tu achetes des bouquins sur la programmation, c pas malin...

sinon, oui, il faut pouvoir declarer des int, des long, des boolean et d'autres...ça se resent pour certaines applications.
par exemple, le son est sur 16bits, l'ascii est sur 8bits, les cartes graphiques sur 8,16,24 ou 32 bits, et encore, je ne donne que les types de donnée de base.
niveau memoire, meme si l'on a un espace d'addressage infini, ce n'est pas une raison pour utiliser un max de memoire.
il faut economiser plutot, ça allege le travail du processeur, de la gestion memoire et ça met moins longtemps à telecharger, qui n'en a pas marre des programme de M**** qui mettent des plombes a charger a cause de leur taille?
ça bouffe la bande passante, et avec les nouveau µP 64 bits, il vau mieu ne pas creer que des long, sinon, ta memoire va vite saturer, un long = 8 octets, si tu enregistre du texte en 64 bits, tu risque d'avoir de serieux problemes.
halte au gaspillage.
bigmonster
  My name is Dr watson
  :-)
      ?   @     Posté le 19/12/2007 10:41:42  
Voter pour ce message
La Bibliothèque Universitaire est la plus belle invention pour étudiants, Edfed !
Merci du conseil sinon !
-------
La vraie liberté c'est de pouvoir toute chose sur soi
Beno@
  
  :-)
      ?   @     Posté le 19/12/2007 17:16:24  
Voter pour ce message
immagine que l'on code toute nos variables, même les logiques (0 ou 1) en variables longues, on aurrait besoin de beaucoup plus de mémoire :/

en fait ca ne fera pas de grosse différences sur un petit programme mais sur un jeu, un os, un gros logiciel je peux te dire que tu verra la différence
bigmonster
  My name is Dr watson
  :-)
      ?   @     Posté le 20/12/2007 10:23:52  
Voter pour ce message
Bonjour,
merci de ta réponse Beno@, j'ai une autre petite question(qui ne nécessite pas un autre post) : Pourquoi peut-on définir un char comme signed ou unsigned ? Est-ce-que cela nous permet d'avoir accès à un plus grand nombre de caractère ?
Et finalement je voulais aussi savoir si on pouvait faire un int allant jusqu'à -255 (le signer en négatif en gros) ?

Merci d'avance de vos réponses
-------
La vraie liberté c'est de pouvoir toute chose sur soi
edfed
  
  :-)
      ?   @     Posté le 20/12/2007 17:02:34  
Voter pour ce message
alors, un char, c'est un octet... 8 bits....
pas un de plus...
2^8 = 256 soit 256 possibilités.
les possibilités dependent des algorythmes.
si ton algorythme et fait pour interpreter les octets comme des chiffres non signés negatifs, ça doit etre possible.
seulement c'est pas simple, pour l'aritmetique, tu est obligé de les convertir en word ( 16 bits )car le pc ne comprend pas trop les delires humains..

sinon:
signed, c'est pour des octets de -128 à +127
unsigned, c'est de 0 à 255
et ton delire, c'est un unsigned auquel tu soustrait 255

pour se faire, il faut convertir en 16 bits. ti code en C donc ça devrait pas etre trop dur a comprendre:

movzx ax,al ;zero extend 8bits to 16bits
sub ax,255 ;AX - 255

et voila, tu as un octet qui est devenu negatif, car converti en 16 bits.
en C, tu est encore limité par les librairies.. c pas tres cool pour faire du hardcore, c'est bon pour coder vite des trucs standard.. comme tout les high level languages...
bigmonster
  My name is Dr watson
  :-)
      ?   @     Posté le 21/12/2007 13:21:05  
Voter pour ce message
« Le langage C peut être qualifié de bas niveau ou peu typé dans le sens où le langage est conçu pour permettre la manipulation directe des mots machine »
Trouvé dans Wikipédia.
T'es sûr que c'est un langage de haut niveau edfed ?
Sinon merci pour l'astuce, mais le code que tu m'as donné. Ce ne serait pas plus de l'asm que du C par hasard ?
-------
La vraie liberté c'est de pouvoir toute chose sur soi
Tr0yL
  
   
      ?   @     Posté le 03/01/2008 10:34:52  
Voter pour ce message
bigmonster,
pour commencer, peu importe que l'on ai beaucoup de ram de dispo, il faut optimiser au maximum les traitements et ainsi économiser de la memoire.

Sur un traitement de données local, ok tu n'auras peut etre pas bcp d'interet a utiliser du int au lieu d'un long mais admettons que tu veuilles faire du transfert de données sur le reseau, les temps d'echanges seront plus long.

Ensuite, tu demandes la possibilité de stocker -255 dans un int mais il est deja possible de le faire car sur un PC 16 bits, un int vas de -32 768 à 32 767 et sur un PC 32 bits, de -2 147 483 648 à 2 147 483 647. donc c'est possible. Mais pour economiser de la memoire, il te faudra preferer les short int. -32 768 à 32 767.

vas sur http://www.commentcamarche.net/cpp/cpptype.php3 pour voir les differents types natifs du C/C++

Derniere chose, je considére le C comme un langage de tous niveaux car on peut toucher au "metal" et aux APIs de surface ...

Et edfed, ton code n'est pas du C c'est de l'assembleur ... Apres bigmonster, tu as raison c'est pas mal les bouquins, vaut mieux avoir de la doc sur papier que sur ecran ! et les cours du net ne sont pas forcement orientés de façon linéaire.

Bon courage ! :super:
bigmonster
  My name is Dr watson
  :-)
      ?   @     Posté le 07/01/2008 20:14:02  
Voter pour ce message
Merci de tes conseils Tr0yl.
-------
La vraie liberté c'est de pouvoir toute chose sur soi
esselfe
  Je calcul donc je suis relativ
  :-)
      ?   @     Posté le 04/02/2008 04:56:36  
Voter pour ce message
À noter que le processeur fait une opération sur 32bits (ou 64bits pour les processeurs 64bits). si tu utilise des variables de 8bits comme du texte, il y a de bonne chance que le processeur puisse utiliser plusieurs variables dans ses registres, ça donne une économie sur les opérations d'échanges...

Maintenant le choix repose sur le nombre de possibilités dont tu as besoin, la contrainte en fait. Comme plusieurs le disent, il est préférable d'allèger le programme optimalement, au cas où l'utilisateur ai besoin de bonnes performances.
-->Message édité par esselfe le 04/02/2008 04:57:12<--
-------
vive Linux!
esselfe
  Je calcul donc je suis relativ
  :-)
      ?   @     Posté le 05/02/2008 05:31:21  
Voter pour ce message
[bigmonter:]je voulais aussi savoir si on pouvait faire un int allant jusqu'à -255

bah si tu trouve la taille de la variable, tu peux lui donner le max qu'elle peut représenter ( char -> 127 ) et tu lui ajoute 1 (devient -127)
-------
vive Linux!
<     1       >

01net > Forum de 01net > Programmation et développement > C/C++
> Déclaration de variables

Aller à :

Page générée en : 0.05s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Emploi 
Rémunérations :
30 fiches salaires des métiers informatiques passées au crible  !
Jeux
Nouveauté : Transformez une bijouterie décrépite en une petite merveille de l’industrie du luxe !