3.3 KiB
C8
Exercice 1
#include <stdio.h>
int main(){
printf("Taille de char : %d\n", sizeof(char));
printf("Taille de short : %d\n", sizeof(short));
printf("Taille de int : %d\n", sizeof(int));
printf("Taille de unsigned : %d\n", sizeof(unsigned));
printf("Taille de long long int : %d\n", sizeof(long long int));
printf("Taille de float : %d\n", sizeof(float));
printf("Taille de double : %d\n", sizeof(double));
printf("Taille de char[3] : %d\n", sizeof(char[3]));
printf("Taille de int[7] : %d\n", sizeof(int[7]));
}
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main(){
printf("Valeur minimale de char : %hhd\n",CHAR_MIN);
printf("Valeur maximale de char : %hhd\n",CHAR_MAX);
printf("Valeur minimale de short : %hd\n",SHRT_MIN);
printf("Valeur maximale de short : %hd\n",SHRT_MAX);
printf("Valeur minimale de int : %d\n",INT_MIN);
printf("Valeur maximale de int : %d\n",INT_MAX);
printf("Valeur minimale de unsigned : %u\n",0);
printf("Valeur maximale de unsigned : %u\n",UINT_MAX);
printf("Valeur minimale de long long int : %lld\n",LLONG_MIN);
printf("Valeur maximale de long long int : %lld\n",LLONG_MAX);
printf("Valeur minimale de float : %e\n",FLT_MIN);
printf("Valeur maximale de float : %e\n",FLT_MAX);
printf("Précision de float : %e\n",FLT_EPSILON);
printf("Valeur minimale de double : %e\n",DBL_MIN);
printf("Valeur maximale de double : %e\n",DBL_MAX);
printf("Précision de double : %e\n",DBL_EPSILON);
}
Pour les types entiers signés, leur valeur maximale est le nombre correspondant à 011111..111 (avec n-1 1 avec n le nombre de bits sur lequel est codé le type, donc 2^(n-1)-1. La valeur minimale est elle 1000...000 avec n-1 0 où le premier bit a un poids négatif, donc -2^(n-1).
Pour les entiers signés la valeur maximale est 11111.111 avec n 1, donc 2^n-1.
Pour les flottants, le nombre minimal correspond la valeur la plus basse que peut prendre la mantisse (et 0 pour la valeur), donc 1,0 * 2^(-2^(m-1)) avec m le nombre de bits de la mantisse. Le nombre maximal est l'inverse, valeur la plus haute de la mantisse et de la valeur, donc environ 2.0*2^(2^(m-1)-1). La précision est le plus petit nombre encodable strictement au dessus de 1. Il s'agit de 1.00000000..001 avec (n-1) zéros, avec n le nombre de bits de la valeur. La précision est donc de 2^(-n+1).
Exercice 2
-
Pour coder le nombre
2 147 412 111, une variable de typeintest suffisante. -
Pour coder le nombre
3 294 957 194, une variable de typeunsigned intsuffit. Si on veut toujours supporter les négatifs, il faut alors se tourner vers de variables plus grandes, commelong(a.k.a.long int). -
Pour coder le nombre
2 000 000 000, une variable de typeintsuffit.
Exercice 3
- 13 (
int) - 'B' (
int) - 75 (
int) - 160 (
int) - 132 (
long int) - 32.5 (
double) - 0 (
int)
Exercice 4
Le (int) pertmet de convertin (cast) le flottant `` en entier, de la manière souhaitée par le compilateur. y est ensuite remit dans un flottant mais garde sa «valeur» entière. z vaut donc round(y) + 4.5.
Exercice 5
int a = 0b0110100010100101;
int b = 0b0111101001100001;
int c = a ^ b;