Els operadors són símbols que indiquen a l'ordinador que realitzi operacions matemàtiques, lògiques o de manipulació de dades. En C, els operadors es poden classificar en diverses categories segons la seva funcionalitat.
Tipus d'Operadors
- Operadors Aritmètics
- Operadors de Relació
- Operadors Lògics
- Operadors d'Assignació
- Operadors d'Increment i Decrement
- Operadors Bit a Bit
- Operadors de Membre d'Estructura
- Operadors de Punt i Fletxa
- Operadors de Grandària
- Operadors Aritmètics
Els operadors aritmètics s'utilitzen per realitzar operacions matemàtiques bàsiques.
Operador | Descripció | Exemple |
---|---|---|
+ |
Suma | a + b |
- |
Resta | a - b |
* |
Multiplicació | a * b |
/ |
Divisió | a / b |
% |
Mòdul (residu) | a % b |
Exemple:
#include <stdio.h> int main() { int a = 10, b = 3; printf("Suma: %d\n", a + b); printf("Resta: %d\n", a - b); printf("Multiplicació: %d\n", a * b); printf("Divisió: %d\n", a / b); printf("Mòdul: %d\n", a % b); return 0; }
- Operadors de Relació
Els operadors de relació s'utilitzen per comparar dos valors.
Operador | Descripció | Exemple |
---|---|---|
== |
Igual a | a == b |
!= |
Diferent de | a != b |
> |
Major que | a > b |
< |
Menor que | a < b |
>= |
Major o igual que | a >= b |
<= |
Menor o igual que | a <= b |
Exemple:
#include <stdio.h> int main() { int a = 10, b = 3; printf("a és igual a b? %d\n", a == b); printf("a és diferent de b? %d\n", a != b); printf("a és major que b? %d\n", a > b); printf("a és menor que b? %d\n", a < b); printf("a és major o igual que b? %d\n", a >= b); printf("a és menor o igual que b? %d\n", a <= b); return 0; }
- Operadors Lògics
Els operadors lògics s'utilitzen per combinar expressions booleanes.
Operador | Descripció | Exemple |
---|---|---|
&& |
I lògic (AND) | a && b |
` | ` | |
! |
Negació lògica (NOT) | !a |
Exemple:
#include <stdio.h> int main() { int a = 1, b = 0; printf("a AND b: %d\n", a && b); printf("a OR b: %d\n", a || b); printf("NOT a: %d\n", !a); return 0; }
- Operadors d'Assignació
Els operadors d'assignació s'utilitzen per assignar valors a les variables.
Operador | Descripció | Exemple |
---|---|---|
= |
Assignació | a = b |
+= |
Assignació amb suma | a += b |
-= |
Assignació amb resta | a -= b |
*= |
Assignació amb multiplicació | a *= b |
/= |
Assignació amb divisió | a /= b |
%= |
Assignació amb mòdul | a %= b |
Exemple:
#include <stdio.h> int main() { int a = 10, b = 3; a += b; printf("a += b: %d\n", a); a -= b; printf("a -= b: %d\n", a); a *= b; printf("a *= b: %d\n", a); a /= b; printf("a /= b: %d\n", a); a %= b; printf("a %%= b: %d\n", a); return 0; }
- Operadors d'Increment i Decrement
Els operadors d'increment i decrement s'utilitzen per augmentar o disminuir el valor d'una variable en una unitat.
Operador | Descripció | Exemple |
---|---|---|
++ |
Increment | a++ |
-- |
Decrement | a-- |
Exemple:
#include <stdio.h> int main() { int a = 10; printf("Valor inicial: %d\n", a); a++; printf("Després d'incrementar: %d\n", a); a--; printf("Després de decrementar: %d\n", a); return 0; }
- Operadors Bit a Bit
Els operadors bit a bit s'utilitzen per realitzar operacions a nivell de bit.
Operador | Descripció | Exemple |
---|---|---|
& |
I bit a bit (AND) | a & b |
` | ` | O bit a bit (OR) |
^ |
XOR bit a bit | a ^ b |
~ |
Complement a un (NOT) | ~a |
<< |
Desplaçament a l'esquerra | a << 1 |
>> |
Desplaçament a la dreta | a >> 1 |
Exemple:
#include <stdio.h> int main() { int a = 5, b = 3; // a = 0101, b = 0011 en binari printf("a AND b: %d\n", a & b); // 0001 printf("a OR b: %d\n", a | b); // 0111 printf("a XOR b: %d\n", a ^ b); // 0110 printf("NOT a: %d\n", ~a); // 1010 (en binari, depenent de la mida de l'int) printf("a << 1: %d\n", a << 1); // 1010 printf("a >> 1: %d\n", a >> 1); // 0010 return 0; }
- Operadors de Membre d'Estructura
Els operadors de membre d'estructura s'utilitzen per accedir als membres d'una estructura.
Operador | Descripció | Exemple |
---|---|---|
. |
Accés a membre d'estructura | struct.member |
-> |
Accés a membre d'estructura a través d'un punter | ptr->member |
Exemple:
#include <stdio.h> struct Punt { int x; int y; }; int main() { struct Punt p = {10, 20}; struct Punt *ptr = &p; printf("p.x: %d\n", p.x); printf("ptr->y: %d\n", ptr->y); return 0; }
- Operadors de Grandària
L'operador sizeof
s'utilitza per determinar la mida d'una variable o tipus de dades en bytes.
Operador | Descripció | Exemple |
---|---|---|
sizeof |
Mida en bytes | sizeof(a) |
Exemple:
#include <stdio.h> int main() { int a = 10; printf("Mida de a: %lu bytes\n", sizeof(a)); printf("Mida de int: %lu bytes\n", sizeof(int)); return 0; }
Exercicis Pràctics
-
Escriu un programa que demani a l'usuari dos números enters i mostri el resultat de les operacions aritmètiques bàsiques (suma, resta, multiplicació, divisió i mòdul) entre aquests dos números.
-
Escriu un programa que demani a l'usuari un número enter i determini si és parell o senar utilitzant l'operador mòdul.
-
Escriu un programa que demani a l'usuari dos números enters i mostri si el primer és major, menor o igual al segon utilitzant operadors de relació.
-
Escriu un programa que demani a l'usuari un número enter i mostri el resultat de desplaçar els bits d'aquest número a l'esquerra i a la dreta en una posició.
Solucions
Exercici 1
#include <stdio.h> int main() { int a, b; printf("Introdueix dos números enters: "); scanf("%d %d", &a, &b); printf("Suma: %d\n", a + b); printf("Resta: %d\n", a - b); printf("Multiplicació: %d\n", a * b); printf("Divisió: %d\n", a / b); printf("Mòdul: %d\n", a % b); return 0; }
Exercici 2
#include <stdio.h> int main() { int num; printf("Introdueix un número enter: "); scanf("%d", &num); if (num % 2 == 0) { printf("%d és parell.\n", num); } else { printf("%d és senar.\n", num); } return 0; }
Exercici 3
#include <stdio.h> int main() { int a, b; printf("Introdueix dos números enters: "); scanf("%d %d", &a, &b); if (a > b) { printf("%d és major que %d\n", a, b); } else if (a < b) { printf("%d és menor que %d\n", a, b); } else { printf("%d és igual a %d\n", a, b); } return 0; }
Exercici 4
#include <stdio.h> int main() { int num; printf("Introdueix un número enter: "); scanf("%d", &num); printf("Desplaçament a l'esquerra: %d\n", num << 1); printf("Desplaçament a la dreta: %d\n", num >> 1); return 0; }
Conclusió
En aquesta secció, hem après sobre els diferents tipus d'operadors en C i com utilitzar-los per realitzar diverses operacions. Els operadors són fonamentals per a la programació, ja que permeten manipular dades i prendre decisions basades en condicions. Practicar amb aquests operadors és essencial per dominar la programació en C.
Curs de Programació en C
Mòdul 1: Introducció al C
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
Mòdul 5: Arrays i Strings
Mòdul 6: Punteres
Mòdul 7: Estructures i Unions
Mòdul 8: Assignació Dinàmica de Memòria
Mòdul 9: Gestió d'Arxius
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat