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
