Operateur<< en C
InAme19
Messages postés
539
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerai utiliser l'opérateur binaire << sur un double.
pour un int je fais cela:
alors pour un double j'avais essayé :
j'ai eu cette erreur: erreur: invalid operands to binary << (have ‘double’ and ‘int’)
cela ne marche pas, donc j'ai voulu caster...
mais j'ai cette erreur: erreur: invalid operands to binary << (have ‘double’ and ‘double’)
Alors comment utiliser l'opérateur << avec un double?
merci d'avance pour vos réponses
j'aimerai utiliser l'opérateur binaire << sur un double.
pour un int je fais cela:
int main(){ int x=9; printf("%d\n",(x<<1)); return 0; }
alors pour un double j'avais essayé :
int main(){ double x=9; printf("%f\n",(x<<1)); return 0; }
j'ai eu cette erreur: erreur: invalid operands to binary << (have ‘double’ and ‘int’)
cela ne marche pas, donc j'ai voulu caster...
int main(){ double x=9; printf("%f\n",(x<<(double)1)); return 0; }
mais j'ai cette erreur: erreur: invalid operands to binary << (have ‘double’ and ‘double’)
Alors comment utiliser l'opérateur << avec un double?
merci d'avance pour vos réponses
A voir également:
- Operateur<< en C
- Opérateur de réseau mobile - Guide
- 0466 quel opérateur - Forum Mobile
- 0668 quel opérateur ✓ - Forum Mobile
- 0758 quel opérateur - Forum Opérateurs & Réseaux mobiles
- 0650 quel opérateur - Forum Mobile
7 réponses
Essaie de faire un transtypage (conversion en int de ta variable double)
double mavariable;
int mavariableint;
mavariableint = (int) mavariable;
tu traite 'mavariableint', voilà ;)
Si ça marche pas on verra ensemble le problème
double mavariable;
int mavariableint;
mavariableint = (int) mavariable;
tu traite 'mavariableint', voilà ;)
Si ça marche pas on verra ensemble le problème
oui d'accord mais cela me pose un petit soucis...
j'aimerai utiliser un double car c'est sur 8 octets contrairement à un int ou un long qui sont sur 4 octets.
Donc par exemple j'ai un entier égal à 1
en binaire on a: 0000 0000 0000 0000 0000 0000 0000 0001 pour un double
0000 0000 0000 0001 pour un int
et j'aimerai mettre le bit à 1 tout à gauche. si je traite un int ça me rendra 1000 0000 0000 0000.
donc si ensuite je fais mavariable = mavariableint, ça me donnerai 0000 0000 0000 0000 1000 0000 0000 0000.
D'où le soucis... je veux juste décaler les bits d'un double mais j'ai l'impression que l'on ne peux pas utiliser les opérateurs binaires directement sur un double.
Donc la solution qui me viendrai à l'esprit c'est de travailler sur un int comme tu l'as suggérer mais il faudrai concaténer à un autre (ici ça serait int1= 1000 0000 0000 0000 et int2=0000 0000 0000 0000) mais je ne vois pas comment faire...
j'aimerai utiliser un double car c'est sur 8 octets contrairement à un int ou un long qui sont sur 4 octets.
Donc par exemple j'ai un entier égal à 1
en binaire on a: 0000 0000 0000 0000 0000 0000 0000 0001 pour un double
0000 0000 0000 0001 pour un int
et j'aimerai mettre le bit à 1 tout à gauche. si je traite un int ça me rendra 1000 0000 0000 0000.
donc si ensuite je fais mavariable = mavariableint, ça me donnerai 0000 0000 0000 0000 1000 0000 0000 0000.
D'où le soucis... je veux juste décaler les bits d'un double mais j'ai l'impression que l'on ne peux pas utiliser les opérateurs binaires directement sur un double.
Donc la solution qui me viendrai à l'esprit c'est de travailler sur un int comme tu l'as suggérer mais il faudrai concaténer à un autre (ici ça serait int1= 1000 0000 0000 0000 et int2=0000 0000 0000 0000) mais je ne vois pas comment faire...
Tu crois pas si bien dire :/ ...
"Ce sont des opérateurs que l'on trouve plus souvent dans les langages d'assemblage que dans les langages de haut-niveau. On retrouve toutes (ou presque) les opérations de manipulation de bits possibles. Elles ne s'appliquent pas, bien entendu, aux float et aux double"
source : http://handy.univ-lyon1.fr/service/cours/lamot/node40.html
Après je suis sur que tu es sur la bonne voie, mais essaie de voir des tutoriels afin de maîtriser les types et leurs intéractions . Moi dsl g pas trop le time, je t'aurais aidé avec plaisir
"Ce sont des opérateurs que l'on trouve plus souvent dans les langages d'assemblage que dans les langages de haut-niveau. On retrouve toutes (ou presque) les opérations de manipulation de bits possibles. Elles ne s'appliquent pas, bien entendu, aux float et aux double"
source : http://handy.univ-lyon1.fr/service/cours/lamot/node40.html
Après je suis sur que tu es sur la bonne voie, mais essaie de voir des tutoriels afin de maîtriser les types et leurs intéractions . Moi dsl g pas trop le time, je t'aurais aidé avec plaisir
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ne vous est-il pas venu à l'esprit qu'il existe plusieurs espèces d'int ?
On trouve des courts appelés 'short', des normaux et des longs.
Sur nos machines, on a donc la possibilité d'avoir des longueurs de 2, 4 ou 8 octets. Cela pourrait peut-être résoudre le problème.
Bonne continuation.
On trouve des courts appelés 'short', des normaux et des longs.
Sur nos machines, on a donc la possibilité d'avoir des longueurs de 2, 4 ou 8 octets. Cela pourrait peut-être résoudre le problème.
Bonne continuation.