Moultes questions pour un débutant

Résolu
wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007 - 24 juin 2006 à 21:56
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 25 juin 2006 à 01:23
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2006 à 01:23
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++
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 juin 2006 à 22:11
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2006 à 00:04
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++
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
25 juin 2006 à 00:43
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
0
Rejoignez-nous