C/Modificadores: Diferenzas entre revisións
Contido eliminado Contido engadido
Sen resumo de edición |
Revisión inicial, continuará... |
||
Liña 1:
{{Navegador|Tipos
{| align="right" style="margin-left: 1em;"
| __TOC__
|} <!-- Isto sitúa o índice á dereita -->
Os modificadores son como adxectivos que se utilizan nas declaracións de variables para modificar as súas propiedades.
==Signo e lonxitude==
Aos tipos [[{{BASEPAGENAME}}/Tipos fundamentais#Enteiros|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 <source lang=c enclose=none>int</source> e <source lang=c enclose=none>char</source> poden modificarse.
Os modificadores de signo son <source lang=c enclose=none>signed</source>, que indica que a variable pode conter números tanto negativos como positivos, e <source lang=c enclose=none>unsigned</source>, que indica que a variable só pode conter valores positivos, duplicando ─en realidade, ampliando na metade máis un─ a cantidade de valores positivos que pode conter.
Para indicar se un tipo de dato vai ser <source lang=c enclose=none>signed</source> ─valor por defecto, non é preciso indicalo─ ou <source lang=c enclose=none>unsigned</source>, precédese o tipo da variable desa palabra na súa declaración, coma no exemplo:
<source lang=c>
signed int variable1;
unsigned
</source>
Facendo uso dos modificadores de signo e lonxitude pódense obter as seguintes combinacións:
<table border=1 cellspacing=0 cellpadding=5>
<tr style="text-align: center;">
<th>Modificadores</th>
<th>Tipo</th>
<th>Tamaño</th>
<th>Rango de valores</th>
<th>Declaracións alternativas</th>
</tr>
<tr>
<td style="text-align: center;"><source lang=c enclose=none></source></td>
<td style="text-align: center;"><source lang=c enclose=none></source></td>
<td style="text-align: right;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;"><source lang=c enclose=none>
</source></td>
</tr>
</table>
==<source lang=c enclose=none>const</source>==
Este modificador indica que o valor co que se ''inicializa'' unha variable non se pode modificar ao longo do programa. Aínda que isto 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 é utilizar as [[{{BASEPAGENAME}}/Directrices para o preprocesador#.23define|directrices para o ''preprocesador'']].
Un exemplo podería ser a declaración de π (Pi) para poder usar o seu valor ao longo do programa:
<source lang=c>
const double pi = 3.14159;
</source>
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
==<source lang=c enclose=none>static</source>==
Ao declarar unha función ou variable '''global''' como estática (<source lang=c enclose=none>static</source>) vólvese “interna”, ou o que é o mesmo, inaccesible dende o código fonte doutros ficheiros.
Ao declarar unha variable '''local''' como estática, créase coma calquera outra variable. Así e todo, ao saíren do [[{{BASEPAGENAME}}/Variables#Ámbito|á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 <source lang=c enclose=none>static</source> ''inicialízanse'' co valor nulo (<code>0</code>) por defecto.
==<source lang=c enclose=none>auto</source>==
Este modificador ─que en certos aspectos podería considerarse o ''alter ego'' do <source lang=c enclose=none>static</source>─ indica que a variable en cuestión debe ser “destruída” ao saír o programa do seu [[{{BASEPAGENAME}}/Variables#Ámbito|ámbito]]. Dado que este é o comportamento por defecto das variables, o seu uso é completamente innecesario.
==<source lang=c enclose=none>extern</source>==
Este modificador utilízase cando un ficheiro necesita acceder a unha variable noutro ficheiro que podería non estar incluído (<source lang=c enclose=none>#include</source>) 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.
==<source lang=c enclose=none>volatile</source>==
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 <source lang=c enclose=none>volatile</source> 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”.
==<source lang=c enclose=none>register</source>==
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.
{{Navegador|Tipos
<!-- Categorías: -->
[[Categoría:C ─
|