CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

J´aide les personne en C/C++

Koyo-K
Koyo-K
Niveau 9
28 janvier 2005 à 13:56:39

Lol ! C´est en Octet => voilà pourquoi je comprenais pas ! ( Dans mon livre ils mettent en bits, pourquoi ne pas avoir mis la taille des types en octet vu que c´est la grandeur qu´on utilise... arf).

Le tableau, j´ai fait
int machin[5];
cout < < sizeof(machin);

Mais avec ton explication précédente sur les octets, maintenant c´est bien plus clair ! En effet, un int est sur 16 bits ( 2 octets) -> ce qui fait 2*5 = 10 :)
Encore merci !

ps : j´essaie le sizeof sur l´exemple de structure que tu as donné ce soir ; ). En théorie, un long étant sur 32 bits et un char sur 8, ça devrait bien faire 40 bits, soit 5 octets... Mais vu le ton de ta phrase, je m´attends à retrouver des surprises :)

JeanYvesYves
JeanYvesYves
Niveau 10
28 janvier 2005 à 14:04:26

Essaie, tu verras que ça ne te donne pas 5 octets.
Sinon, tu dis que tes int sont sous 16 bits ? ??

Quelle compilateur utilises tu ? ? ( les vieux compilos DOS étaient sous 16 bits ! apres, c´est passé a 32 ! !)

Koyo-K
Koyo-K
Niveau 9
28 janvier 2005 à 14:35:46

Euh... TC++ mais je savais pas que les compilos interprétaient un même type différemment :question:

JeanYvesYves
JeanYvesYves
Niveau 10
28 janvier 2005 à 14:45:09

en fait, pour tous les types, c´est pareil de compilos en compilos, sauf le int :

avant ( a l´epoque du DOS) le int était sur 16 bits
maintenant sur 32.
TC++ est un vieuuuuux compilateur :)
mais hormis cela, tout est pareil que sur les nouveaux :)

jejej
jejej
Niveau 9
28 janvier 2005 à 16:24:05

ATTENTION SPOILER

    • ********************

le resultat de sizeof( S) pour S = char + long , je trouve 8 :p)
la question est pourquoi :)

JeanYvesYves
JeanYvesYves
Niveau 10
28 janvier 2005 à 16:26:36

normal :) essaie d´inverser les membres dans la structure now :

struct S
{
long t;
char s;
};

fuzzy_eyebrow
fuzzy_eyebrow
Niveau 9
28 janvier 2005 à 16:27:28

salut!

Koyo-K
Koyo-K
Niveau 9
28 janvier 2005 à 18:44:37

J´ai inversé les membres et je trouve toujours 8... ça devait faire quelque chose de spécial ?

Par contre j´ai un peu avancé dans la lecture du bouquin et j´en suis aux pointeurs ( par contre là je connais pas du tout).
Est-ce qu´ils servent principalement à manipuler une variable dans une autre fonction que dans celle où est initialisé le pointeur ?

Une autre embrouille dans ce bouquin : à quoi ça me sert de savoir qu´1 pointeur vers une variable d´un int long sera interprété comme un pointeur de type long et qu´il récupérera les 4 octets de la variable, pas seulement le 1er ?
Aussi, je voudrais dire que je comprends rien à cette phrase à rallonge -> si quelqu´un peut dire ça simplement je refuse pas :) .

Plus loin dans le chapitre des pointeurs je comprends pas non plus le fait que quand on ajoute par ex. 1 à 1 pointeur, il se déplace d´un nombre d´octects équivalent à celui correspondant au type de la variable pointée ? C´est un peu " chercher compliqué alors qu´on peut faire simple" non ?
Est-ce qu´il est nécessaire de comprendre ce charabia sur les adresses/octets ? Parce que bon si je me décourage devant ça je vais encore lâcher l´affaire plusieurs mois...

LGV
LGV
Niveau 28
28 janvier 2005 à 19:17:50

" Est-ce qu´ils servent principalement à manipuler une variable dans une autre fonction que dans celle où est initialisé le pointeur ? "
non, on s´en sert partout : agencement de donnees en memoire, polymorphisme, et bcp d´autres choses.

" à quoi ça me sert de savoir qu´1 pointeur vers une variable d´un int long sera interprété comme un pointeur de type long et qu´il récupérera les 4 octets de la variable, pas seulement le 1er ? "
ca veut dire que quand tu dereferences ton pointeur, il te renvoit TOUTE la donnee pointee ( ou objet) : la donnee pointee a donc une taille.
Ca veux aussi dire qu´en castant ton pointeur tu modifies les tailles des donnees interpretees quand tu dereferences ( i.e. caster un int * en char * et dereferencer te renverra seulement UN octer des 4 de l´int - a voir la norme, little/big endian pour l´octet renvoye - )

" quand on ajoute par ex. 1 à 1 pointeur, il se déplace d´un nombre d´octects équivalent à celui correspondant au type de la variable pointée ? C´est un peu chercher compliqué alors qu´on peut faire simple non ? "
non au contraire ; cette arithmetique des pointeurs est capitale quand tu les modifies ( pour te balader en memoire) : tu t´occupes pas de la taille de chaque donnee, tu incrementes, tu decrementes, et a chaque tu de deplaces de " 1 objet" entier. TRES pratique.

si tu veux avancer a la main d´un nb d´objets connu, tu peux toujours caster en char * :

object *p = &
p = reinterpret_cast<object *>(reinterpret_cast<char *>(p) + offset)

si tu sais pas EXACTEMENT ce que tu fais avec ce genre d´operation, c´est garanti de crasher ton appli.

" Est-ce qu´il est nécessaire de comprendre ce charabia sur les adresses/octets ? "
c´est le coeur meme ; c´est CAPITAL de comprendre ce qu´on fait ; mais au debut c´est normal de galerer, aussi...

Koyo-K
Koyo-K
Niveau 9
28 janvier 2005 à 20:31:11

" toute la donnee pointee" = toutes les cases mémoire qu´un type occupe ?
Je commence à entrevoir certaines de tes explications, mais c´est quand même assez technique en terme de vocabulaire. Bah, je verrai bien si au fil du temps si ça rentrera.

Koyo-K
Koyo-K
Niveau 9
28 janvier 2005 à 20:43:11

Non c´est bon je viens de piger que c´est pas ça la donnée pointée.
I´ll be back quand j´en serai au déréférencement. Pour l´instant, en lisant ça je me fais soufrance :)

Koyo-K
Koyo-K
Niveau 9
29 janvier 2005 à 00:02:04

Au fait, je peux avoir l´explication au fait que un long + char = 5 octets dans une structure ?

Koyo-K
Koyo-K
Niveau 9
29 janvier 2005 à 07:28:22

err... long + char = 8 octets

jejej
jejej
Niveau 9
29 janvier 2005 à 13:02:23

Aaaaah je crois que je viens de comprendre à quoi servaient les classes . ..
Avec une seule classe Pingouin, je peux créer deux pingouins possédant les memes caracteristiques ( position vie etc ) mais dans des proprotions pas forcément egales . ..
cool :)

prog_debutant
prog_debutant
Niveau 4
29 janvier 2005 à 15:19:51

jeanYvesYves,
en fait, l´idée éatit de développer un système d´exploitation. Toute façon, j´ai encore pas mal de chose à apprendre avant de pouvoir concrétiser ce projet. Mais à quoi bon apprendre sans but?

Kilik_killer
Kilik_killer
Niveau 7
29 janvier 2005 à 21:04:17

J´ai encore une question de sa part : comment intégrer des graphismes de blender dans un programme ?

LGV
LGV
Niveau 28
29 janvier 2005 à 23:30:37

également sans rapport véritable avec le C++... mais bon, on va répondre quand meme : blender étant un modeleur, je présume que c´est le modele 3D qui t´interesse. Il faut l´exporter dans un format que tu sais relire ( 3DS ? DXF ? X ? etc.), et exploiter ces informations dans ton programmes pour recreer la structure de l´objet 3D ( charger les vertices, calculer les normales, construire les listes de triangles, etc.) ; en gros ça revient à convertir les données utilisées par blender par des données qui representent la meme chose, mais dans ton programme. Ensuite seulement tu as le controle de ton objet 3D, et tu peux le rendre via une API 3D.

dnob700
dnob700
Niveau 10
30 janvier 2005 à 00:30:16

j´ai demandé la même chose sur programmation, mais je pose ma question ici aussi :

est ce que quelqu´un peut m´expliquer la différence entre ça :
Complexe operator+(Complexe &);
et ça :
Complexe &+(Complexe &);

le petit & de plus qui m´oblige à renvoyer un pointeur plutot qu´un objet.

je veux dire, je sais ce que ça veut dire, mais à l´exécution, est ce qu´il y en a un qui est meilleur que l´autre ou alors ça dépend des situations ?
merci d´avance pour vos réponses.

LGV
LGV
Niveau 28
30 janvier 2005 à 02:13:41

tu ne peux pas renvoyer un Complexe & sur operator + de manière satisfaisante. Pourquoi ? Parceque pour etre bien concu, operator + ne devrait pas modifier l´objet sur lequel il porte ; or s´il ne modifie pas this, tu ne renvoies donc pas *this, mais un nouveau Complexe : renvoyer un & d´un nouveau complexe qui est une variable LOCALE, c´est tres mal pas bien... A proscire.
Par contre sur operator += , pour qui il est logique de modifier this, il est fortement recommendé de renvoyé un const Complexe & , ce qui permet d´enchainer les opérations, sans écrire n´importe quoi, tout en évitant la construction inutile d´objets ( ce qui peut etre TRES couteux selon le type de tes objets)

jejej
jejej
Niveau 9
30 janvier 2005 à 11:37:33

Houlala je viens de télécharger le moteur Irrlicht , c du gros !
J´ai jamais vu ca , il sont prévus des tutoriaux pour dev-cpp qui marchent !
je compile le Hello World , et hop , un modele 3d dans une fenetre , alors que le code fait 30 lignes :)

( d´ailleurs , trop de commentaires tuent les commentaires . .. )

Bon , je dis que c´est incroyable , parceque j´avais deja telecharge des moteurs 3d ( Game incubator entre autres ) sans jamais reussir a rien compiler !

bon , préparez vous a repondre a plein de questions sur ca , ceux qui s´y connaissent ^^
ok j´irais d´abord voir sur les forums du site officiel :p)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment