![]() |
Mòdul
2
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() ![]() |
La mida i rang de les variables
En aquesta pràctica comprovarem la mida i rang dels diferents tipus de variables amb l'ús de l'operador sizeof().
|
|||
![]() |
Desenvolupament de la
pràctica
Definiu un projecte nou anomenat m2p02 i afegiu-li un fitxer de font C/C++ anomenat m2p02.cpp. Escriviu el següent codi:
Explicació del programa
Aquest senzill programa no necessita massa explicacions. És una comprovació de la mida real en octets que ocupa cada tipus de variable. Això es fa amb l'operador sizeof(). sizeof() és un operador de C/C++ i no una funció. No té cap declaració en cap arxiu capçalera. De totes formes es comporta com una funció que admet com argument el nom d'una variable, un tipus de variable o bé una expressió i torna un enter que correspon al nombre d'octets que ocupa la variable, tipus o expressió. El resultat podria ser diferent en compiladors diferents. El resultat en Visual C++ és el següent:
Els modificadors signed i unsigned no afecten a la mida de les variables. L'operador sizeof() és útil si es volen fer programes "portables", és a dir, que es puguin compilar en diferents compiladors. S'ha de tenir en compte que les variables del tipus int, per exemple, que en VC++ ocupen 4 octets, en altres compiladors, com Turbo C, ocupen 2 octets. L'ús de modificadors com long, que poden semblar redundants, asseguren també la portatibitat dels programes.
El tipus bool és una novetat del Visual C++ des de la versió 5.0. Aquest tipus de variable només pot contenir dos valors: true (1) i false (0) i ocupen 1 octet. Aquestes variables se solen utilitzar per a les condicions de les sentències condicionals, no obstant això, C i C++ permeten l'ús de qualsevol expressió numèrica en les expressions condicionals.
En la segona part del programa es mostra els valors mínims i màxims dels diferents tipus. Per visualitzar aquests valors s'han fet ús d'unes MACROS o constants predefinides. Aquestes MACROS estan definides en els arxius capçalera limits.h i float.h. S'han d'incloure tots dos arxius per tal de poder usar totes aquestes MACROS.
En la tercera part del programa es pot comprovar les conversions automàtiques entre tipus. L'expressió: c + i és la suma de dues variables, una del tipus char i una altra del tipus int, el resultat de l'expressió és un valor del tipus int. Sempre que es barregin dues dades (variables o constants) de tipus diferents en una mateixa expressió, les dades promocionen a dades de tipus superior segons el següent ordre:
bool ->char -> int -> unsigned int -> long -> unsigned long -> float -> double -> long double
En aquest programa, la declaració de les variables c,i,f,d no es fa al començament de la funció main(). Si aquest programa es compilés en un compilador ANSI C donaria un error. En ANSI C, totes les variables s'han de declarar abans de qualsevol altra sentència. C++ permet que les variables es puguin declarar en qualsevol part del programa. La pràctica habitual és declarar totes les variables al començament. Només s'ha de fer servir aquesta característica de C++ si el codi guanya significantment en comprensió. |