C/Modificadores
C | ||
← Volver a Tipos fundamentais | Modificadores | Seguir con Moldes → |
Os modificadores son como adxectivos que se utilizan nas declaracións de variables para modificar as súas propiedades.
Signo e tamaño
[editar]Aos tipos enteiros pódeselles engadir un modificador de signo, que permite establecer se a variable pode ou non conter valores negativos. Deste xeito, os rangos de valores dos tipos int
e char
poden modificarse.
Os modificadores de signo son signed
, que indica que a variable pode conter números tanto negativos como positivos, e unsigned
, que indica que a variable só pode conter valores positivos, duplicando a cantidade de valores positivos que pode conter.
Para indicar se un tipo de dato vai ser signed
─valor por defecto, non é preciso indicalo─ ou unsigned
, precédese o tipo da variable desa palabra na súa declaración, coma no exemplo:
signed int variable1;
unsigned char variable2, variable3;
Existen tamén uns modificadores que permiten cambiar o tamaño das variables int
e double
: short
, para diminuír o tamaño ─só pode utilizarse co tipo int
─, long
, para amplialo, e long long
, para amplialo máis.
O tamaño dun int
non é necesariamente maior ca un short int
e menor que un long int
, senón que o que se cumpre é que:
short int
<=int
<=long int
Facendo uso dos modificadores de signo e lonxitude pódense obter as combinacións da táboa que se amosa a continuación. Téñase en conta que os valores de tamaño e, en consecuencia, rango, poderían cambiar dependendo da arquitectura do sistema operativo e do compilador utilizados.
Modificadores | Tipo | Tamaño | Rango de valores | Declaracións alternativas |
---|---|---|---|---|
signed |
char |
1 byte | -128 ─ 127 | char |
unsigned |
char |
1 byte | 0 ─ 255 |
|
signed short |
int |
2 bytes | -32768 ─ 32767 |
|
unsigned short |
int |
2 bytes | 0 ─ 65535 |
|
signed |
int |
4 bytes | -2.147.483.648 ─ 2.147.483.647 |
|
unsigned |
int |
4 bytes | 0 ─ 4.294.967.296 |
|
signed long |
int |
8 bytes | -9.223.372.036.854.775.807 ─ 9.223.372.036.854.775.807 |
|
unsigned long |
int |
8 bytes | 0 ─ 18.446.744.073.709.551.615 | unsigned long |
signed long long |
int |
|
||
unsigned long long |
int |
unsigned long long |
||
long |
double |
10 bytes |
|
|
long long |
double |
|
const
[editar]Este modificador indica que o valor co que se inicializa unha variable non se pode modificar ao longo do programa, o que implica que é obrigatorio asignarlle un valor á variable na súa declaración. Aínda que o modificador pode non parecer moi útil, en certas situacións o seu uso cobra sentido, e permite a optimización do programa durante o proceso de compilación ─ao saber o compilador que o valor da variable non cambia─. En xeral trátase dun método máis elegante de definir valores constantes do que o é utilizar as directrices para o preprocesador.
Un exemplo podería ser a declaración de π (Pi) para poder usar o seu valor ao longo do programa:
const double pi = 3.14159;
Cómpre ter en conta que un compilador que siga a normativa estándar debería amosar unha alerta avisando do intento de cambiar o valor dunha variable co modificador const
, mais despois de facelo, algúns compiladores poderían ignorar dito modificador ─é dicir, permitir o cambio do valor da variable─. Así que cómpre ter o coidado de non intentar cambiarlle o valor á variable durante o código, non vaia ser que se consiga.
static
[editar]Ao declarar unha función ou variable global como estática (static
) vólvese “interna”, ou o que é o mesmo, inaccesible dende o código fonte doutros ficheiros mediante o modificador extern
.
Ao declarar unha variable local como estática, créase coma calquera outra variable. Así e todo, ao saíren do ámbito da variable (por exemplo, ao rematar o bloque para o cal é local) a variable permanece na memoria ata finalizar a execución do programa, conservando o seu valor. Aínda que este comportamento aseméllase ao das variables globais, diferéncianse destas en que as variables estáticas locais seguen a obedecer ás regras do ámbito e por tanto non pode accederse a elas dende fóra deste.
As variables declaradas coma static
inicialízanse co valor nulo por defecto.
auto
[editar]Este modificador ─que en certos aspectos podería considerarse o alter ego do static
local─ indica que a variable en cuestión debe ser “destruída” ao saír o programa do seu ámbito. Dado que este é o comportamento por defecto das variables, o seu uso é completamente innecesario.
extern
[editar]Este modificador utilízase cando un ficheiro necesita acceder a unha variable noutro ficheiro que podería non estar incluído (#include
) no código fonte do programa. O modificador non crea espazo para unha nova variable, senón que fornece ao compilador información abondo para acceder á variable do ficheiro remoto.
volatile
[editar]Este modificador informa ao compilador de que o valor da variable podería cambiarse por entidades externas alleas ao propio programa. Isto é necesario para certos programas compilados con optimizacións, dado que se non se definise unha variable como volatile
o compilador podería asumir que certas operacións relativas á variable pódense optimizar cando en realidade non poden.
Este modificador resulta particularmente relevante ao traballarmos con sistemas integrados ─nos que o programa podería non ter un control total dunha variable─ e programación “de varios fíos”.
register
[editar]Este modificador indícalle ao compilador que pode optimizar o almacenamento da variable dada almacenándoa nun rexistro do procesador da computadora ao iniciar o programa. A maioría dos compiladores con optimización fano sen necesidade de que se especifique no código fonte, polo que o uso deste modificador non adoita ser necesario. De feito moitos compiladores ignoran directamente este modificador.
C | ||
← Volver a Tipos fundamentais | Modificadores | Seguir con Moldes → |