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

Une petite question en c++

Supermegatom
Supermegatom
Niveau 3
08 mai 2004 à 16:34:48

:hello:
j´ai une petite question à poser :
ça veut dire quoi " unsigned short" en c++ ?
merci d´avance
tchao...

bibi26
bibi26
Niveau 10
08 mai 2004 à 16:43:52

tu a eu sa pendant la compilation?
si oui je sais pas

lag-it
lag-it
Niveau 10
08 mai 2004 à 16:53:27

Unsigned short signifie un entié short ( court, contrairement à long, donc pouvant stocker moins de données ) non signé ( c´est à dire que tu ne peux pas mettre de valeur négatives dedans ( -1 interdit ) ) .

Altonfrere
Altonfrere
Niveau 10
08 mai 2004 à 16:59:03

Euh je dirai plutôt que toute valeur représentée dans un unsigned short sera interpretée comme une valeur non signée donc allant de 0 à 65535.

Affecter -1 à un unsigned short est tout à fait possible ( ca génèrera un warning à la limite) mais il faut savoir que le résultat risque d´être différent de ce à quoi on pourrait s´attendre ( en l´occurrence -1 deviendra la plus grande valeur représentable sur 16 bits : 0xFFFF).

Donc si on a:

unsigned short a = -1;
unsigned short b = 1;

on aura a > b

Lapintade
Lapintade
Niveau 30
08 mai 2004 à 17:08:06

On peut resumer par : Entier 16bits non signé ( 0 a 65535).

short etant l´entier 16 bits signé ( -32000 a +32000).

viki6kornman
viki6kornman
Niveau 10
08 mai 2004 à 17:09:58

Ouai, c lapintade qui a raison! :ui:

Altonfrere
Altonfrere
Niveau 10
08 mai 2004 à 17:14:49

d´abord un unsigned short c´est quand tu as un short de ton footballeur préfére que t´as pas réussi à faire dédicacer :D

Supermegatom
Supermegatom
Niveau 3
08 mai 2004 à 17:16:33

Merci a tous ceux qui m´ont repondu !

kufa
kufa
Niveau 9
08 mai 2004 à 17:19:01

Faire gaffe, par ex un long sur amiga ( 32 bits) n´est pas comme un long sur un pc, enfin ca depend des compilos..

Altonfrere
Altonfrere
Niveau 10
08 mai 2004 à 17:27:01

humm tu es sur ? j´ai toujours pensé que c´était le type int qui était variable suivant l´architecture. Le long étant toujours sur 32 bits, le short sur 16 . ...

LGV
LGV
Niveau 28
08 mai 2004 à 18:32:39

y´a toujours moyen de faire un truc standard avec les types prédefinis par le compilo __int8, __int16, __int32 ( ainsi que __int64 mais pas supporté par tous les compilos)
ensuite, pour un truc *vraiment* standard, faudrait utiliser les numeric_limits<>() pour les bornes des plages de valeurs supportés par un type donné.
on notera alors que numeric_limits<int>::max() sur un PC est différent de numeric_limits<int>::max() sur un sparc2. Du coup, faire un truc réellement générique, c´est le merdier...

lag-it
lag-it
Niveau 10
08 mai 2004 à 18:37:24

Altonfrere > Oui certes, on peut y affecter -1, mais ce ne sera pas géré comme un nombre négatif.

Kelios
Kelios
Niveau 8
09 mai 2004 à 02:06:47

" y´a toujours moyen de faire un truc standard avec les types prédefinis par le compilo __int8, __int16, __int32 ( ainsi que __int64 mais pas supporté par tous les compilos) "
__intx ne sont pas standard. C´est une norme VC++ à la base qui peut avoir été adoptée par d´autres compilos.

La norme ISO C99 spécifie autre chose pour garder les entiers portables:
des typedefs prédéfinis dans le header stdint.h .
Il s´agit des types int8_t, int16_t, int32_t et int64_t, et de leurs versions non signées uint8_t, uint16_t, uint32_t et uint64_t.

Le problème, c´est que c,est pas tous els compilos non plus qui respectent la C99 à fond. Certains ne fourniront pas cet header par exemple, ou encore ne la fourniront pas par défaut.

Oh, et c´est un truc ( théoriquement) respecté et par le C et le C++.

LGV, tu offres une autre solution que je ne connaissait pas, et dont je me questionne sur sa normalité ( à entendre, s´il fait partie d´une norme) et sa portabilité inters-compilos. Et de plus il ne s´agit que de C++ ( Oui je sais, le topic précisait C++ et pas C/C++, donc il n´y a rien de déplacé dans tes propos, mais tout de même...). Tu peux nous donner plus de précisions?

Kelios
---------

LGV
LGV
Niveau 28
09 mai 2004 à 02:40:15

autant pour moi concernant les __intx, j´étais persuadé que c´était standard ; certainement parceque comme tu les précises, ils ont été adoptés par d´autres compilos que VC++, du coup en testant ça marche bien... :/

concernant les numeric_limits, cela fait parti de la Standard C++ Library, donc ça DOIT etre dispo dans tout env. de dev. c++.
le header correspondant est < limits>. La class numeric_limit en elle meme est un template spécialisé pour tous les types et supportant de nombreuses fonctions, comme is_signed(), is_exact(), epsilon(), etc. Et entre autres, min() et max() qui précisent donc l´intervale valide pour une donnée d´un type.

kufa
kufa
Niveau 9
09 mai 2004 à 17:34:11

oui mais la stl n est pas dispo sur toutes les platformes :)

LGV
LGV
Niveau 28
09 mai 2004 à 18:30:28

bon ben c´est le merdier quoi : avant de faire un truc faut se lever de bonne heure... Autant utiliser des " à-prioris" sur les plages de valeurs au final :(

kufa
kufa
Niveau 9
09 mai 2004 à 18:32:32

Malheureusement il n y a pas trop le choix, mais de toute facon pour peu que l´on veuille faire un code qui sera compile correctement sur une meme machine, ca se fait.. Par contre, le multiplatformes et bcp plus delicat, mais est-ce reellement un probleme?

LGV
LGV
Niveau 28
09 mai 2004 à 18:36:10

+portable ( sinon on ne comprend rien...)
=> [...] avant de faire un truc PORTABLE faut se lever [...]

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