Sintaxi C
La sintaxi del llenguatge de programació C és el conjunt de regles que regeixen l'escriptura de programari en C. Està dissenyat per permetre programes que són extremadament concisos, tenen una estreta relació amb el codi objecte resultant i, tanmateix, proporcionen una abstracció de dades de nivell relativament alt. C va ser el primer llenguatge d'alt nivell amb gran èxit per al desenvolupament de sistemes operatius portàtils.[1][2]
La sintaxi C fa ús del principi de maximal munch.[3]
Estructures de dades
[modifica]Tipus de dades primitives
[modifica]El llenguatge de programació C representa els nombres en tres formes: integral, real i complex. Aquesta distinció reflecteix distincions similars en l'arquitectura del conjunt d'instruccions de la majoria de les unitats centrals de processament. Els tipus de dades integrals emmagatzemen nombres en el conjunt de nombres enters, mentre que els nombres reals i complexos representen nombres (o parell de nombres) en el conjunt de nombres reals en forma de coma flotant.
Tots els tipus d'enters C tenen variants signed
i unsigned
. Si no s'especifica explícitament signed
o unsigned
, en la majoria de les circumstàncies s'assumeix signed
. Tanmateix, per raons històriques, char
simple és un tipus diferent tant de signed char
com unsigned char
. Pot ser un tipus signat o un tipus sense signar, segons el compilador i el conjunt de caràcters (C garanteix que els membres del conjunt de caràcters bàsics C tinguin valors positius). A més, els tipus de camp de bits especificats com int
pla poden estar signats o sense signar, depenent del compilador.[4]
Punters
[modifica]
En les declaracions, el modificador d'asterisc (*
) especifica un tipus de punter. Per exemple, quan l'especificador int
faria referència al tipus d'enter, l'especificador int*
fa referència al tipus "punter a enter". Els valors del punter associen dues peces d'informació: una adreça de memòria i un tipus de dades. La següent línia de codi declara una variable punter a enter anomenada ptr :
int *ptr;
Matrius
[modifica]Definició
[modifica]Les matrius s'utilitzen en C per representar estructures d'elements consecutius del mateix tipus. La definició d'una matriu (de mida fixa) té la sintaxi següent:
int array[100];
que defineix una matriu anomenada array per contenir 100 valors del tipus primitiu int
. Si es declara dins d'una funció, la dimensió de la matriu també pot ser una expressió no constant, en aquest cas s'assignarà memòria per al nombre especificat d'elements. En la majoria de contextos en un ús posterior, una menció de la matriu de variables es converteix en un punter al primer element de la matriu. L'operador sizeof
és una excepció: sizeof array
dona la mida de tota la matriu (és a dir, 100 vegades la mida d'un int
, i sizeof(array) / sizeof(int)
retornarà 100).
Accedint elements
[modifica]La funció principal per accedir als valors dels elements d'una matriu és l'operador de subíndex de matriu. Per accedir a l'element i -indexat de array, la sintaxi seria array[i]
, que fa referència al valor emmagatzemat en aquest element de matriu.
Cadenes
[modifica]En C, els literals de cadena estan envoltats de cometes dobles ("
) (per exemple, "Hello world!"
) i es compilen en una matriu dels valors de char
especificats amb un codi de caràcter final nul addicional (valor 0) per marcar el final de la cadena.
Operadors
[modifica]Estructures de control
[modifica]C és un llenguatge de forma lliure.
L'estil de reforç varia d' un programador a un altre i pot ser objecte de debat. Vegeu l'estil de sagnat per a més detalls.
Enunciats compostos
[modifica]En els elements d'aquesta secció, qualsevol <statement> es pot substituir per una sentència composta. Els enunciats compostos tenen la forma:
{
<optional-declaration-list>
<optional-statement-list>
}
Declaracions de selecció
[modifica]C té dos tipus de sentències de selecció : la sentència if
i la sentència switch
.
La declaració if
té la forma:
if (<expression>)
<statement1>
else
<statement2>
La instrucció switch
fa que el control es transfereixi a una de diverses sentències depenent del valor d'una expressió:
switch (<expression>)
{
case <label1> :
<statements 1>
case <label2> :
<statements 2>
break;
default :
<statements 3>
}
Declaracions d'iteració
[modifica]C té tres formes de declaració d'iteració:
do
<statement>
while (<expression> ) ;
while (<expression> )
<statement>
for (<expression> ; <expression> ; <expression> )
<statement>
A les sentències while
i do
, la subinstrucció s'executa repetidament sempre que el valor de l' expression
sigui diferent de zero (equivalent a true). Amb while
, la prova, inclosos tots els efectes secundaris de <expression>
, es produeix abans de cada iteració (execució de <statement>
); amb do
, la prova es produeix després de cada iteració. Per tant, una instrucció do
sempre executa la seva subinstrucció almenys una vegada, mentre que while
pot no executar la subinstrucció en absolut.
Declaracions de salt
[modifica]
Una instrucció continue
pot aparèixer només dins d'una instrucció d'iteració i fa que el control passi a la part de continuació del bucle de la instrucció d'iteració més interna. És a dir, dins de cadascuna de les declaracions
while (expression)
{
/* ... */
cont: ;
}
do
{
/* ... */
cont: ;
} while (expression);
for (expr1; expr2; expr3) {
/* ... */
cont: ;
}
Funcions
[modifica]Sintaxi
[modifica]
La definició de la funció AC consta d'un tipus de retorn (void
si no es retorna cap valor), un nom únic, una llista de paràmetres entre parèntesis i diverses declaracions:
<return-type> functionName( <parameter-list> )
{
<statements>
return <expression of type return-type>;
}
Punter a funció
[modifica]Un punter a una funció es pot declarar de la següent manera:
<return-type> (*<function-name>)(<parameter-list>);
Referències
[modifica]- ↑ «C Syntax» (en anglès americà). [Consulta: 19 desembre 2023].
- ↑ alexbuckgit. «C docs - get started, tutorials, reference.» (en anglès americà). [Consulta: 19 desembre 2023].
- ↑ «The GNU C Reference Manual» (en anglès). [Consulta: 19 desembre 2023].
- ↑ «Learn C Programming» (en anglès). [Consulta: 19 desembre 2023].