Introduction

Introduction

Comme promis, à commencer par cette partie de notre article de développement C, nous commencerons par l'apprentissage, sans autre introduction. Je n'ai pas trouvé de meilleur moyen de commencer autre que cela, car les types, les opérateurs et les variables sont un élément essentiel de C et vous les utiliserez tout le temps lorsque vous rédigerez vos propres programmes. Par exemple, vous pouvez écrire un programme C simple sans définir vos propres fonctions, mais il est plus difficile de le faire sans certaines variables, à moins que vous ne vouliez vous en tenir à «Bonjour,!". Une variable n'est rien de plus qu'un emplacement en mémoire tenant une valeur qui peut être modifiée (d'où le nom). Mais avant de déclarer une variable, vous devez savoir quel type de valeur vous voulez qu'il détienne, et ici vous utiliserez des types. Et pour fonctionner Sur ces variables, vous aurez besoin… des opérateurs, bien sûr. J'ai l'intention de rendre ce cours aussi concis que possible, donc je recommande l'attention et comme d'habitude, pratiquer.

Les types

Comme dit, avant d'aller déclarer une variable, vous devez savoir quel type de valeur il tirera. Sera-ce un numéro? Si oui, quelle est la taille? Est-ce un entier? Ou peut-être que vous voulez déclarer une chaîne? Ce sont des choses que vous devez savoir avec certitude avant de choisir le type, et nous recommandons des soins supplémentaires en ce qui concerne les éventuels débordements de tampon. C est le genre de langue qui vous donne suffisamment de corde pour vous accrocher et ne fait pas beaucoup de main, et ces erreurs sont très difficiles à repérer dans un grand programme.

Avant de commencer, vous devez être conscient des relations entre le matériel et les types. C'est là que nous nous attendons à ce que vous fassiez de la lecture par vous-même, surtout si vous utilisez du matériel autre que x86, que ce soit 32 ou 64 bits, des compilateurs autres que le CCG ou les systèmes d'exploitation autres que Linux. Habituellement, ces différences apparaissent lorsqu'ils traitent des valeurs de points flottants. Nous n'approfondirons pas cela, car ce n'est pas le moment ni l'endroit, mais vous devez lire une documentation sur votre compilateur, en particulier les pièces dépendantes du matériel. Commençons maintenant.

Char C; Char UC non signé; shorts; UNSIGNED US US; int i; non signé u; long l; non signé long ul; flotter f; Double D; long double ld; const int CI; 

Nous avons décidé de prendre le chemin de «Exemple d'abord, des explications plus tard» ici, car nous avons estimé que certains d'entre vous trouveront l'exemple ci-dessus. Il existe d'autres langues connexes qui déclarent leurs variables presque de la même manière, et après tout, les mots clés sont intuitifs. Avant de continuer, il faut dire que Char, int, Float et Double sont les principaux types de données en C. Non signé et signé sont modificateurs, ce qui signifie que si vous avez besoin de travailler avec des valeurs inférieures à zéro, vous devez dire au compilateur que votre variable est signée, car il peut être plus grand ou plus petit que zéro. Long et court (ceux-ci s'appliquent généralement aux entiers). le long de. Comme vous pouvez le voir, dans la pratique, on n'utilise pas de long int ou de court INT, juste long ou court. Le mot-clé const indique au compilateur qu'une fois qu'une variable a une valeur, elle ne peut pas être modifiée.

Commençons par le plus petit type, Char. Il est garanti d'être suffisamment grand pour tenir une valeur d'octet, et il est toujours de taille fixe. Si les gens vous diront qu'un octet est toujours de huit bits, mieux vaut réfléchir à nouveau. Chaque architecture matérielle populaire utilise en effet des octets de huit bits, mais il y a des exceptions, alors ne faites pas d'hypothèses si vous souhaitez écrire du code portable. Sur x86, puisque un octet est de huit bits, un char (non signé) peut contenir des valeurs de 0 à 255, soit 28. Si un char est signé, il peut conserver des valeurs de -128 à 127. Mais le nom peut vous induire en erreur: un personnage peut en effet être stocké dans un char, mais si vous utilisez Unicode, nous parlons de mulabyte là-bas et vous devrez utiliser WCHAR_T, mais plus à ce sujet plus tard.

Maintenant que vous savez quels sont les modificateurs de type, nous pouvons obtenir des entiers. Sur les entiers, vous pouvez combiner les modificateurs de signe et de longueur, comme le montre l'exemple ci-dessus, pour répondre à vos besoins. N'oubliez pas d'avoir un éditeur à portée de main et de vérifier avec les limites.En-tête H (sur mon système, il se trouve dans / usr / inclure) pour découvrir les limites réelles de votre système. En règle générale, un int conservera des valeurs de 0 à 65535 ou, si elle est signée, de -32768 à 32767. Et un long modificateur doublera le nombre d'octets de stockage, donc si un int nécessite 2 octets, un long nécessitera 4. Nous allons laisser à l'utilisateur le reste des entiers et leurs valeurs minimales et maximales. Nous allons cependant vous montrer comment trouver des tailles et des limites de votre système.

Les flotteurs sont des valeurs à virgule flottante, ce qui implique que vous devez définir une variable comme celle-ci:

Valeur flottante; valeur = 234.00;

Même s'il n'a rien après le point (la partie décimale), c'est donc un entier. Il existe en fait des situations où vous devez déclarer une valeur entière en tant que flotteur, car la valeur peut changer et le type déclaré doit être en mesure de stocker des valeurs de points flottants. Toutes les valeurs de votre machine peuvent être trouvées dans Float.H.

Variables

Maintenant que vous savez quels types vous disposez en C, voyons comment vous pouvez les utiliser efficacement. Certains pourraient se demander «si nous avons de longs doubles qui peuvent stocker des valeurs si grandes, pourquoi ne pas les utiliser partout?" . La programmation concerne l'efficacité, et la programmation C surtout, et c'est pourquoi le stockage d'une valeur comme 23 dans un double utilisera 4 fois la mémoire nécessaire, pour rien. Lorsque vous déclarez une variable, un morceau de mémoire est réservé à cela en fonction du type. Alors pourquoi gaspiller la mémoire sans raison valable? Créer une habitude d'utiliser le type exact qui correspond à vos valeurs (possibles), pas moins, pas plus. Vous avez vu ci-dessus déclarer variables. Voyons maintenant comment les définir, comme en leur donnons une valeur.

c = 'a'; i = 234; F = 12643.984; LD = 16546581654161598309.87;

Nous avons pris les noms des exemples précédents, qui, comme vous l'avez peut-être remarqué, sont écrits pour refléter le type assigné, donc 'ld' est un long double et ainsi de suite. Dans cet exemple, nous avons pris deux étapes: la première pour déclarer la variable, la seconde pour la définir en lui attribuant une valeur. Certains diront que c'est un bon style d'écrire du code comme ça, mais vous pouvez faire les deux opérations en une seule étape et personne ne vous blessera:

char c = 'a'; int i = 234; Float f = 12643.984; long double LD = 16546581654161598309.87;

Nous vous recommandons et vous exhortons même à utiliser des noms avec un sens dans votre code, et le commentez autant que possible: il y aura des chances qu'il y en aura d'autres lisant ce que vous avez écrit et leur vie sera tellement plus facile si vous le faites. Aussi, utilisez des plafonds uniquement lorsque cela est nécessaire, d'autant plus que C utilise tous les CAP dans diverses directives de préprocesseur. Le premier caractère du nom de la variable doit également être une lettre.

Comme promis, puisque tous les discours et pas de jeu ne sont pas bons, nous vous montrerons un petit programme que vous pouvez utiliser pour voir les valeurs minimales et maximales de différents types, mais nous illustrerons simplement quelques-uns. Le reste sera votre travail à faire, en suivant notre exemple, avec un éditeur ayant des limites.H et flotter.h Ouvert. Il y aura de nouveaux éléments ici, mais ne vous inquiétez jamais, ils seront expliqués.

#include #include #include int main () non signé long ullmax = ullong_max; long lmax = long_max; long double ldmax = ldbl_max; printf ("La valeur maximale d'un long non signé est% lu.\ n ", ullmax); printf (" La valeur maximale d'un long est% ld.\ n ", lmax); printf (" La valeur maximale d'un long double est% lf.\ n ", ldmax); retour 0;  

Ainsi, nous déclarons trois variables avec des noms significatifs et leur attribuons les valeurs de trois macros définies dans les limites.H et flotter.H. Alors bien sûr, nous devrons les imprimer. Nous le faisons en utilisant printf (), et ici nous nous arrêterons pour une petite conversation. Nous recommandons 'man 3 printf' pour plus de détails sur chaînes de format, Autrement dit, la partie à l'intérieur des doubles citations de printf qui commencent par un «%». Ils indiquent à printf quel type de valeur il devrait s'attendre, donc il devrait se comporter différemment avec différents types. Dans le premier exemple «% lu» signifie long long (le l), qui n'est pas signé (le «u»). Pour les entiers, la chaîne de format est «D», pour décimal, et parce que c'est un entier long, ce sera «% ld». Dans le troisième printf, F signifie flotteur, un double est fondamentalement un long flotteur, et un long double est un long flotteur, d'où le format.

Maintenant, enregistrez le code ci-dessus, compilez-le et exécutez-le. Ce programme, une fois que vous y avez ajouté plus, vous aidera lorsque vous souhaitez déclarer une variable, mais vous êtes encore incertain dans quel type il devrait s'intégrer.

Les opérateurs

Opérateurs arithmétiques

Ce sous-chapitre, bien sûr, traite des opérateurs de base habituels que vous avez appris à l'école primaire. Mais il y a un peu plus. Exemple d'ennemi,. Les opérateurs +, -, *, / et% sont les opérateurs binaires. % est l'opérateur modulo, ce qui signifie que si nous avons 50% 2, le résultat sera 0 parce que le résultat de la division 50/2 a un entier en conséquence. Vous pouvez utiliser les quatre premiers opérateurs avec n'importe quelle valeur numérique, mais le modulo ne traite que des entiers. La priorité est la même que dans le livre d'arithmetics.

Opérateurs relationnels

Ces opérateurs sont>,> =, <=, <, and they all have the same precedence. For the next part we recommend extra care, because it's cause for much confusion in the beginner's league, and non-beginners alike. Like said above, one uses '=' to give some value to a variable. But if you want to check if a variable has a certain value, you use '==', and if it hasn't, use '!=', where '!' is the logical negation operator, as you'll see. Let's take the following (useless) example:

#include int main () int var = 4; si (var == 4) printf ("var est 4!\ n "); autre printf ("Il y a quelque chose de mal.\ n "); retour 0;  

Fonderie

En un mot, le casting oblige le compilateur à oublier le type et à traiter une variable comme un autre type que vous fournissez. Cela ne se fait pas au hasard, uniquement entre les types compatibles, et les soins sont recommandés lors de l'utilisation de la coulée. Par exemple, disons que nous voulons découvrir la valeur ASCII de «A». Le code pourrait ressembler à ceci:

#include int main () char c = 'a'; printf ("La valeur ASCII de 'A' est% D.\ n ", (int) c); retour 0;  

Vous obtiendrez la valeur 97, qui est en effet la valeur ASCII de «A». Donc, en utilisant des parenthèses avant et après le type que vous souhaitez «imposer» et tout cela avant le nom de la variable, vous obtenez le casting. L'exemple ci-dessus fonctionne parce qu'un char n'est plus qu'un petit int, donc les types sont compatibles. Essayez de lancer la variable ci-dessus vers d'autres types et notez les résultats.

Opérateurs d'incrément et de décréments

Vous avez entendu parler de C ++ à coup sûr. Eh bien, son nom suggère qu'il est en quelque sorte plus que C, car '++' est un opérateur d'incrément (ajoute 1 à la valeur de la variable), tout comme '-' est un opérateur de décrémentation. Ce sont des opérateurs unaires et peuvent être préfixés et postfixés. Qu'est-ce que cela signifie? Cela signifie que vous pouvez écrire soit ++ C ou C ++, et le résultat peut ou non être similaire. La différence est qu'avec un «++» préfixé, la valeur de la variable est d'abord incrémentée d'un, puis utilisée, et l'inverse. Nous vous montrerons un court exemple de quand il est important et quand il ne.

#include int main () int x; int n = 10; int z; n ++; / * n sera 11 maintenant * / ++N; / * idem, préfixe ou postfix sans importance * / x = n ++; / * x sera 10 * / z = ++ n; / * z sera 11 * / retour 0;  

Mais que se passe-t-il si vous voulez incrémenter / décrémenter avec plus d'un? Simple, car C ++ est l'équivalent de C + = 1. Remplacez 1 par la valeur dont vous avez besoin et vous êtes prêt. Ces opérateurs composés peuvent également être utilisés avec tous les autres opérateurs arithmétiques binaires (E.g. * = ou / =) et les opérateurs bit.

Opérateurs

En C, vous pouvez facilement faire des opérations bit! Ils fonctionnent et doivent être utilisés uniquement avec des types entiers, signés ou non signés. Ces opérateurs sont:

& - Bitwise et | - bit

Opérateurs logiques

Nous avons déjà traité '!', qui nie toute expression logique, mais il y a deux opérateurs logiques très importants (veillez à ne pas les mélanger avec les bitwise): et et et, respectivement. Donc, si je veux écrire dans C quelque chose comme "Si la variable 1 a la valeur 2 et la variable 2 a une valeur 8", j'écrirai comme ceci:

si (var1 == 2 && var2 == 8)… 

Ici, les deux conditions doivent évaluer comme vraie pour les instructions suivantes si pour exécuter. Si l'un ou l'autre le fera, ou les deux, nous remplaçons '&&' par '||' (conjonction contre disjonction).

Autres opérateurs

Les personnes qui ont une certaine expérience C ont peut-être remarqué l'absence de certains opérateurs. Bien sûr, et nous en sommes conscients, mais quel sens cela serait-il énuméré de l'opérateur d'indirection tandis que les lecteurs ne savent pas ce qu'est un pointeur? Ainsi, les autres opérateurs, spécifiques à d'autres parties de C, seront traités en temps voulu.

Conclusion

Avec les exemples offerts dans cette partie, nous sommes certains que vous avez assez pour jouer un peu et essayer diverses options. Vous savez, le compilateur ne mordra pas si vous les nourrissez de mauvaises données, et l'ordinateur ne va pas exploser. Et, comme nous l'avons déjà dit, vous ne pouvez pas apprendre la programmation en lisant des livres uniquement. Alors procurez-vous votre clavier et créez quelque chose d'intéressant.

Voici ce à quoi vous pouvez vous attendre ensuite:

  • je. C Développement sur Linux - Introduction
  • Ii. Comparaison entre C et d'autres langages de programmation
  • III. Types, opérateurs, variables
  • Iv. Contrôle de flux
  • V. Les fonctions
  • Vi. Pointeurs et tableaux
  • Vii. Structure
  • Viii. E / S de base
  • Ix. Style de codage et recommandations
  • X. Construire un programme
  • Xi. Emballage pour Debian et Fedora
  • Xii. Obtenir un forfait dans les référentiels officiels Debian

Tutoriels Linux connexes:

  • Python Expressions régulières avec des exemples
  • Bash Script: Hello World Exemple
  • Comment installer Ubuntu sur USB Stick
  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Créer USB Bootable Manjaro Linux
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
  • Créer un Ubuntu 20 bootable.04 Stick USB sur MS Windows 10
  • Comment installer les pilotes Nvidia sur Fedora 32