Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3196 connectés 

  FORUM HardWare.fr
  Programmation

  BOOL et bool ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

BOOL et bool ?

n°23420
haahhahaha​ha
Posté le 09-04-2001 à 17:19:21  profilanswer
 

un BOOL est un int renommé qui prend donc 4 octet.
Comme de toute façon cette variable ne prend jamais une autre valeur que 1 ou 0, pourquoi l'API de Windows ne prend pas le type bool du C qui prend un seul octet ?
Quel est l'avantage à utiliser BOOL au lieu de bool ?

mood
Publicité
Posté le 09-04-2001 à 17:19:21  profilanswer
 

n°23422
zop
1 world, 1 web, 1 Windows
Posté le 09-04-2001 à 17:21:09  profilanswer
 

Le compilo est content :D

 

[edit]--Message édité par zop--[/edit]

n°23454
SoWhatIn22
Posté le 09-04-2001 à 18:09:22  profilanswer
 

avantage:
ca fait chier tout le monde parce qu'on est obligé de tout re-écrire pour compiler avec un autre compilo.
Donc on n'a pas envie de re-écrire, donc on garde le même compilo, à savoir le leur.
 
donc aucun avantage pour toi

n°23461
JPA
Posté le 09-04-2001 à 18:31:03  profilanswer
 

Je ne suis pas sûr de ce que je vais avancer, mais il me semble avoir lu qq part que le transfert et le traitement d'un seul octet etait plus lent que 4 (largeur du BUS)
A confirmer bien sûr...

n°23463
bat
Posté le 09-04-2001 à 18:38:50  profilanswer
 

Je pense que JPA a raison. Si ca vous interesse, je peux me renseigner sur cette question.
Sinon, je pense qu'on utilise BOOL car quand tu utilises une macro pour définir un type, c'est plus facile de redéfinir le type dans tout le prog, puisqu'il suffit de modifier la macro. Donc le code est plus facilement portable.
Ex : INT représente un integer 32 bits sur Win32 (cad int) et un integer 64 bits sur Win64 (cad int64).

n°23466
Roswell_
Posté le 09-04-2001 à 18:42:54  profilanswer
 

Dans le même genre j'ai endentu dire que les calculs en double allaient plus vite qu'en float! :bounce:


---------------
http://www.cheata.net le site qui vous donne la banane!
n°23472
n0mad
inscrit au XXe siècle
Posté le 09-04-2001 à 18:56:42  profilanswer
 

haahhahahaha a écrit a écrit :

un BOOL est un int renommé qui prend donc 4 octet.
Comme de toute façon cette variable ne prend jamais une autre valeur que 1 ou 0, pourquoi l'API de Windows ne prend pas le type bool du C qui prend un seul octet ?
Quel est l'avantage à utiliser BOOL au lieu de bool ?




 
Parce que l'API windows est utilisable en C et pas seulement en C++. Par compatibilité avec l'existant , ils ont gardé BOOL dans les MFC. Enfin c'est ce que j'ai lu.
 
C'est vrai que c'est chiant de monopoliser 32 bits au lieu d'un seul.


---------------
Pipiru piru piru pipiru pi
n°23473
darkoli
Le Petit Dinosaure Bleu
Posté le 09-04-2001 à 18:58:33  profilanswer
 

non les calculs en double sont plus long et surtout la division qui est tres gourmande. Plus la precision est importante plus c'est long.
 
Pour les autres operations il n'y a pas de grandes differences entre float et double (+,-,*).

n°23503
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-04-2001 à 22:37:31  profilanswer
 

[citation][nom]pourquoi l'API de Windows ne prend pas le type bool du C qui prend un seul octet ?[/citation]
 
Parce qu'il y a pas de type bool en C, c'est du C++ :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°23504
BifaceMcLe​OD
The HighGlandeur
Posté le 09-04-2001 à 22:47:30  profilanswer
 

JPA a écrit a écrit :

Je ne suis pas sûr de ce que je vais avancer, mais il me semble avoir lu qq part que le transfert et le traitement d'un seul octet etait plus lent que 4 (largeur du BUS)
A confirmer bien sûr...




Exact, c'est ce qu'on appelle communément les problèmes d'alignement.
A l'époque du vénérable 8086, on alignait sur 2 octets (on travaillait sur 16 bits), et bientôt, on devrait aligner sur 8 (64 bits).
 
Plus exactement, en raisonnant sur 32 bits, ce n'est pas plus lent de lire un octet plutôt que 4 (ça prend exactement le même temps en fait), dès lors que l'octet unique est dit aligné, c'est-à-dire qu'il démarre sur une adresse qui est un multiple de 4 octets. Ca devient plus lent quand il n'est plus aligné.
Mais vous remarquerez que cela revient alors au même que le booléen ne prenne qu'un octet mais qu'on l'aligne, ou qu'il prenne les 4 octets complets...

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

mood
Publicité
Posté le 09-04-2001 à 22:47:30  profilanswer
 

n°23530
haahhahaha​ha
Posté le 10-04-2001 à 07:42:48  profilanswer
 

Du C++ le bool ?
Dans ce cas je comprends. Faut dire que g pas trop connu l'epoque du C.

n°23531
haahhahaha​ha
Posté le 10-04-2001 à 07:45:42  profilanswer
 

Merci pour cette belle réponse qui a fait avancer les choses.

n°23532
gilou
Modérateur
Modosaurus Rex
Posté le 10-04-2001 à 07:50:14  profilanswer
 

antp a écrit a écrit :

 
 
Parce qu'il y a pas de type bool en C, c'est du C++ :D




 
 
Tiens, en voila un qui a perdu une bonne occasion de se taire.
Dans le dernier standard du langage C (C99), un type bool, compatible avec celui du C++ a ete adopte. Son implementation peut etre 1 bit ou 1 byte (recommande pour des raisons evidentes de compatibilite, de fonctionnement de sizeof,...)
Ont aussi ete introduits les types long long et unsigned long long pour l'arithmetique 64 bits, et les types float complex, double complex, long double complex, float imaginary, double imaginary, long double imaginary.
 
Bon, pour l'instant, il y a pas beaucoup de compilos supportant ce nouveau standard, mais ca viendra.
A+,

 

[edit]--Message édité par gilou--[/edit]


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°23540
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-04-2001 à 09:29:37  profilanswer
 

gilou a écrit a écrit :

 
 
 
Tiens, en voila un qui a perdu une bonne occasion de se taire.
Dans le dernier standard du langage C (C99), un type bool, compatible avec celui du C++ a ete adopte. Son implementation peut etre 1 bit ou 1 byte (recommande pour des raisons evidentes de compatibilite, de fonctionnement de sizeof,...)
Ont aussi ete introduits les types long long et unsigned long long pour l'arithmetique 64 bits, et les types float complex, double complex, long double complex, float imaginary, double imaginary, long double imaginary.
 
Bon, pour l'instant, il y a pas beaucoup de compilos supportant ce nouveau standard, mais ca viendra.
A+,




 
Si c'est une norme de 99, désolé mais mes cours datent de 98 :)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°23550
BENB
100% Lux.
Posté le 10-04-2001 à 09:56:26  profilanswer
 

haahhahahaha a écrit a écrit :

un BOOL est un int renommé qui prend donc 4 octet.
Comme de toute façon cette variable ne prend jamais une autre valeur que 1 ou 0, pourquoi l'API de Windows ne prend pas le type bool du C qui prend un seul octet ?
Quel est l'avantage à utiliser BOOL au lieu de bool ?




Il n'y a pas d'avantages sinon utiliser des API qui ont ete definie il y a quelques annees (Win NT et Win95) et qui doivent donc compiler avec des progs de cette epoque... quelque soit le langage dans lequel il sont ecrits.
En fait il n'y a aucun avantage, siono de garder une compatibilite...
 
De plus qui a dit qu'un bool ne prennait qu'un octet ?
Il en prend au moins 1.
la regle est la suivante
sizeof(bool)<sizeof(char)<sizeof(short)<sizeof(int)<sizeof(long)
et bool au moins 1 octet
char au moins 1 octet
short au moins 2
int au moins 2
long au moins 4...
 
En C/C++ l'arithmetique float est plus lente que la double en theorie car en fait les float sont convertis en double puis le resultat est converti en float (a verifier)

n°23558
gilou
Modérateur
Modosaurus Rex
Posté le 10-04-2001 à 10:18:31  profilanswer
 

Antp, Oui, en 99, un update majeur du standard a ete adopte.
Si tu lis le C/C++ Dev Journal, il y a eu des articles a ce sujet en octobre et ensuite.
5 nouveaux Keywords: inline, restrict, _Bool, _Complex et _Imaginary.
Il y a des headers stdbool.h, stdint.h, inttypes.h, fpenv.h,...
Il y a les types que j'ai donne dans mon precedent post.
Il y a des spec pour utiliser une machine implementant l'arithmetique en virgule flotante au standard IEEE (avec les NaN, les infinis...)
Il y a differentes autres nouveautes, dont les arrays de taille variable permettant la syntaxe suivante, je crois:  
fonction (unsigned int i, autres params...)
{
 char tableau[i];  
....
}  
(peut evidemment pas etre statique le tableau)
 
Comme en C++, on a:
Les commentaires // sont des commentaires valides (Quelle nouveaute :D)
les structures if switch while et do sont toutes implementees comme des blocs (% scope)
on peut declarer la variable d'un for localement au for (for (int i=0;...) )
 
Il y a encore d'autres trucs utiles: une liste declarant un  enum peut se terminer par une , sans generer d'erreur.
Il y a une notation avec un . sans rien a gauche utilisee pour initialiser les membres d'un struct.
 
Il y a un symbole _func_ qui est utilisable comme _FILE_ et _LINE_ et donne le nom de la fonction en cours.
\u suivi de 4 chiffres hexa (resp \U et 8 chiffres hexa)  represente les caracteres unicodes  (resp ISO10646)
 
Une des grosses diffs du C99 avec les implems precedentes est que int n'est plus le type par defaut.
 
Tu peux acheter une version PDF du standard C99 sur le web pour $18 en http://www.techstreet.com/ncitsgate.html (et suit le lien sur le langage C)
A+,

 

[edit]--Message édité par gilou--[/edit]


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°23567
haahhahaha​ha
Posté le 10-04-2001 à 10:58:05  profilanswer
 

Bien que je m'en fou, je sais maintenant que bool vient d'être implémenter dans le language C. Moi j'utilise le C++ (de toutes façon pour les pauvres différences entre le C et le C++).
Donc maintenent je vais utilise le type BOOL qui est apparament meilleur d'après BifaceMcLeOD

n°23568
haahhahaha​ha
Posté le 10-04-2001 à 10:59:21  profilanswer
 

Le symbole _func_ est implémenté dans VS.Net Beta 1 ?
Parce que sa a l'aire pas mal...

n°23582
haahhahaha​ha
Posté le 10-04-2001 à 11:32:05  profilanswer
 

et c quoi la différence avec __FUNCTION__ ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  BOOL et bool ?

 

Sujets relatifs
Plus de sujets relatifs à : BOOL et bool ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)