Test - if else
Pas de grande différence avec le Python. Par exemple :
code python
# python
if x == 0:
print("x est nul")
else :
print("x n'est pas nul")
code c
// c
// ne pas oublier #include<stdio.h> pour le printf et
// bien sûr la fonction main.
if (x == 0) {
printf("x est nul\n");
} else {
printf("x n'est pas nul\n");
}
- Les deux structures sont très proches. Dans les deux cas le
elsen'est pas obligatoire.
- Comme déjà mentionné, C n'utilise pas les indentations. On pourrait retirer les indentations dans le programme C et même tout écrire sur une même ligne !
Ce sont les { } qui indiquent le début et la fin des structures.
Néanmoins, pour plus de lisibilité, on s'astreint à utiliser des indentations.
Le placement des indentations et des accolades donne lieu à des préférences et usages différents. Pour en avoir une idée, consultez cet article. J'utilise plutôt le style K&R.
- Remarquez que la condition est entourée de parenthèses en C :
(x == 0)et pasx == 0en Python. D'une façon générale, Python fait l'économie d'une grande quantité de symboles ce qui en fait un langage plus rapide à utiliser et plus facile à lire.
- Python utilise le mot clé
elifpour le cas où on souhaite enchaîner les tests. C permet de faire la même chose mais sans faire la contraction : on écriraelse if.
- Faites attention à une erreur courante : pas de
;après leif.
code c faux
// code FAUX !!!
// le ; après le if ne devrait pas être là
if (x == 0); {
printf("x est nul\n");
Les opérateurs de test
En Python on pourrait écrire :
code python
if x >= 0 and x < 10:
print("x est dans [0;10[")
En C cela devient :
code c
if (x >= 0 && x < 10) {
printf("x est dans [0;10[\n");
}
Le symbole && est utilisé pour le ET. Cela ne doit pas trop vous surprendre car Python utilise aussi le && mais pour le cas d'un ET bitwise.
De la même façon, le OU est obtenu avec || et le NON avec !.
Opérateurs séquentiels
Les opérateurs sont séquentiels comme en Python. Par exemple :
int x = 0;
if (x != 0 && 1/x < 10){
print("pwet\n");
}
Dans ce cas aucun problème. En effet, x vaut 0, le test x != 0 est donc faux et donc on n'examine même pas la suite du && car dans un ET, si un des éléments est faux, le résultat sera faux. Le calcul 1/x posant problème dans le cas x == 0 n'est donc pas effectué. Ce mécanisme est extrêmement utile.
