C/Modificadores

En Galilibros, o Wikibooks en galego.
< C
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

short int
signed short
short

unsigned short int 2 bytes 0 ─ 65535

unsigned short

signed int 4 bytes -2.147.483.648 ─ 2.147.483.647

int
signed

unsigned int 4 bytes 0 ─ 4.294.967.296

unsigned

signed long int 8 bytes -9.223.372.036.854.775.807 ─ 9.223.372.036.854.775.807

long int
signed long
long

unsigned long int 8 bytes 0 ─ 18.446.744.073.709.551.615 unsigned long
signed long long int

long long int
signed long long
long long

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