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

~¤ Topic de la devinette C++ ¤~

Coupedecheveux
Coupedecheveux
Niveau 9
13 juin 2012 à 20:02:20

Je dirais que ça affiche un nombre maintenant je réfléchis pour savoir lequel :(

Coupedecheveux
Coupedecheveux
Niveau 9
13 juin 2012 à 20:09:18

Je pense que ça affiche 16 mais je ne suis pas sur :(
Un entier fait 4 bytes et un char fait 1 byte si je ne me trompe pas donc quand on donne la référence de p dans le pointeur de char, celui-ci ne prend que les 8 premiers bits et donc : 272 en binaire = 100010000 donc si on ne prend que les 8 premiers bits cela nous donne 00010000 donc 16 en décimal :-p
Correcte ?

godrik
godrik
Niveau 30
13 juin 2012 à 20:42:10

c'est merdique ces trucs la... l'architecture x86 est bizarre dans sa representation des nombres en memoire (big endian/little endian). Je ne serais pas etonne si la reponse etait 0, ou bien 8.

godrik
godrik
Niveau 30
13 juin 2012 à 20:44:26

Grunt, je me suis encore fait avoir par les saloperies de x86. 0 serait sur une architecture raisonnable comme MIPS ou ARM.

Paulop
Paulop
Niveau 12
13 juin 2012 à 20:50:41

Tu peux expliquer pourquoi ça ferait 0 sur ARM ?

Je vois la logique du 16 mais pas celle du 0.

godrik
godrik
Niveau 30
13 juin 2012 à 21:20:40

Parceque ca depend de l'ordre des octets en memoire: endianness[1]. le code de aldebran, lis le premier octets de l'entier.

x86 est little-endian par octet. Il stocke le nombre en memoire comme ceci:
0001 0000 | 0000 0001 | 0000 0000 | 0000 0000
Donc le resultat en sortie est "0001 0000" soit 16

ARM est big-endian (par octet). Il stocke le nombre en memoire:
0000 0000 | 0000 0000 | 0000 0001 | 0001 0000
Donc le resultat en sortie est "0000 0000" soit 0.

C'est un probleme d'endianness des processeurs.

Notons, que wikipedia indique que ARM est maintenant un processeur bi-endian, c'est a dire qu'il supporte les operations little endian et big-endian. mais un processeur POWER de IBM ou motorola, sont big endian.

[1] http://en.wikipedia.org/wiki/Endianness

Paulop
Paulop
Niveau 12
13 juin 2012 à 21:24:58

Ah ben oui tout simplement ^^

Aldebran
Aldebran
Niveau 10
16 juin 2012 à 17:33:26

Je ne l'ai pas précisé mais oui c'était bien 16 donc si quelqu'un d'autre veut poser une devinette, la place est libre :)

hyrulink2
hyrulink2
Niveau 7
17 juin 2012 à 22:17:44

Que va afficher ce code en fonction de n?
http://pastebin.com/ZaDcH3Yq

Un peu plus dur, qu'est ce que ca affiche si on remplace le code de la condition du if ligne 15 par celui de la ligne commentée juste au dessus?

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