Moultes questions pour un débutant [Résolu]

Signaler
Messages postés
88
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour, pas mal de question pour le débutant en C++ que je suis ...
Si qqn à le temps d'y répondre ce serait super gentil !

1. A quoi sert de typer ses variable en unsigned int par exemple, comparé à int... (on peut j'immagine faire du unsigned double aussi, mais peut on faire du unsigned MonType mavarible ?) ?

2. Comment dans une signature de fonction signifier à C++ qu'une argument est optional et potentielment lui donner une valeur par default (cad l'équivalent de, en vba :Public function MaFonction (var1() as double, var2 as string, optional var3 as boolean = true)

wis : in tartiflette I trust (like the others)

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
SF est toujours positionné sur les opérations le positionnant, reste à voir ce qu'on en fait.
Si on declare:
int a, b;
if(a < b) compilo mettra
cmp a, b // pseudo code, faudrait un REG
jl  adresse

alors que si est declaré unsigned mettra
jb adresse

lira simplement les flags différemment et pourtant même valeurs à comparer.
Ce que je fais quand j'écris:
if(0 > (long)GetFileAttributes(szfile)) FICHIER ABSENT

ciao...
BruNews, MVP VC++
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Une variable signé signifie que sa première moiter sera des valeurs
négative et sa seconde, des valeurs positive par exemple un int va
avoir une plage de -2147483648 à 2147483647 je crois et un unsigned int
va avoir une plage de 0 à 4294967295. Pour les valeurs par défaut, je
crois qu'on peut en mettre dans les prototype mais je suis vraiment pas
sur


int fonction( int val1, int val2 = 10);

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
double est toujours signé.
unsigned int ou int est rigoureusement la même chose en interne, toujours 32 bits, ne diffère que sur la façon de la 'regarder' en cas de tranformation ascii, opération de comparaison if(uint < 0) sera toujours faux, etc... Mais pour autant tu as bien accès à une plage full 32 bits donc rien à voir avec les langages interprétés dont il faut absolument te laver le cerveau pour continuer avec le natif et surtout ne jamais chercher un équivalent, on doit penser en C.
Un paramètre optionnel est une calamité en terme de performance, le compilo génèrera une masse de code pour gérer cela. N'utiliser cela qu'en cas d'absolue nécessité, en réfléchissant un peu on trouve toujours le moyen de faire autrement.

ciao...
BruNews, MVP VC++
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
J'aurais peut-être du dire "une plage décimale" quoique l'on peut très
bien marquer 4294967295 dans un int c'est simplement qu'il sera considéré comme un -1. Tous ce qui change réelement c'est
le SF (sign flag) c'est bien ça?

___________________________________________
Les plus grands esprits trouvent toujours une solution