C/Modificadores

< 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ñoEditar

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

constEditar

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.

staticEditar

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.

autoEditar

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.

externEditar

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.

volatileEditar

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”.

registerEditar

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