Vés al contingut

Sintaxi C

De la Viquipèdia, l'enciclopèdia lliure
Aquesta és una versió anterior d'aquesta pàgina, de data 18:39, 1 oct 2024 amb l'última edició de EVA3.0 (bot) (discussió | contribucions). Pot tenir inexactituds o contingut no apropiat no present en la versió actual.
(dif.) ←la pròxima versió més antiga | vegeu la versió actual (dif.) | Versió més nova → (dif.)
Un fragment de codi C que imprimeix "Hola, món!"

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]
  1. «C Syntax» (en anglès americà). [Consulta: 19 desembre 2023].
  2. alexbuckgit. «C docs - get started, tutorials, reference.» (en anglès americà). [Consulta: 19 desembre 2023].
  3. «The GNU C Reference Manual» (en anglès). [Consulta: 19 desembre 2023].
  4. «Learn C Programming» (en anglès). [Consulta: 19 desembre 2023].