<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Programmazione C - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Impara a programmare gratuitamente! Tutorial di programmazione su Python, JavaScript, Linux e molto altro. ]]>
        </description>
        <link>https://www.freecodecamp.org/italian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Programmazione C - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/italian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 08:28:08 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/italian/news/tag/programmazione-c/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Spiegazione dell'istruzione If...Else in C ]]>
                </title>
                <description>
                    <![CDATA[ Il flusso di codice condizionale è la capacità di modificare il modo in cui un pezzo di codice si comporta in base a determinate condizioni. In tali situazioni puoi usare le istruzioni if. L'istruzione if è anche nota come dichiarazione decisionale, poiché prende una decisione sulla base di una data ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/spiegazione-dellistruzione-if-else-in-c/</link>
                <guid isPermaLink="false">621e6350db2217050c2ed144</guid>
                
                    <category>
                        <![CDATA[ Programmazione C ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angelo Mirabelli ]]>
                </dc:creator>
                <pubDate>Fri, 04 Mar 2022 09:08:39 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/03/5f9c9da9740569d1a4ca38ef.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/if-statements-in-c/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">If...Else Statement in C Explained</a>
      </p><p>Il flusso di codice condizionale è la capacità di modificare il modo in cui un pezzo di codice si comporta in base a determinate condizioni. In tali situazioni puoi usare le istruzioni <code>if</code>.</p><p>L'istruzione <code>if</code> è anche nota come dichiarazione decisionale, poiché prende una decisione sulla base di una data condizione o espressione. Il blocco di codice all'interno della dichiarazione <code>if</code> viene eseguito se la condizione restituisce <em>true</em>. Invece, il codice all'interno delle parentesi graffe viene ignorato se la condizione restituisce <em>false</em> e il codice dopo l'istruzione <code>if</code> viene eseguito.</p><h3 id="sintassi-di-un-istruzione-if"><strong>Sintassi di un'istruzione <code>if</code></strong></h3><pre><code class="language-text">if (condizioneTest) {
   // istruzioni
}</code></pre><h3 id="un-semplice-esempio"><strong>Un semplice esempio</strong></h3><p>Diamo un'occhiata a un esempio di quanto appena detto:</p><pre><code class="language-c">#include &lt;stdio.h&gt;
#include &lt;stdbool.h&gt;

int main(void) {
    if(true) {
        printf("La condizone è Vera!\n");
    }

    return 0;
}</code></pre><p><strong>Output<strong>:</strong></strong></p><pre><code class="language-text">La condizone è Vera!</code></pre><p>Se il codice tra parentesi dell'istruzione <code>if</code> è vero, tutto ciò che è racchiuso tra le parentesi graffe viene eseguito. In questo caso, <code>true</code> restituisce vero, quindi il codice esegue la funzione <code>printf</code>.</p><h3 id="istruzioni-if-else"><strong>Istruzioni <code>if..else</code> </strong></h3><p>In un'istruzione <code>if...else</code>, se il codice tra parentesi tonde dell'istruzione <code>if</code> è vero, viene eseguito il codice tra parentesi graffe. Ma se la condizione tra parentesi è falsa, viene eseguito tutto il codice all'interno delle parentesi graffe dell'istruzione &nbsp;<code>else</code>.</p><p>Ovviamente, l'esempio sopra non è molto utile in questo caso perché <code>true</code> restituisce sempre vero. Eccone un altro un po' più pratico:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
    int n = 2;

    if(n == 3) { // compara n con 3
        printf("La condizione è Vera!\n");
    } 
    else { // se la prima condizione non è vera, vai a questo blocco di codice
        printf("La condizione è Falsa!\n");
    }

    return 0;
}</code></pre><p><strong>Output<strong>:</strong></strong></p><pre><code class="language-text">La condizione è Falsa!</code></pre><p>Qui, ci sono alcune differenze importanti. Primo, <code>stdbool.h</code> non è stato incluso. Va bene perché <code>true</code> e <code>false</code> non vengono utilizzati come nel primo esempio. In C, come in altri linguaggi di programmazione, puoi utilizzare istruzioni che restituiscono vero o falso anziché utilizzare direttamente i valori booleani <code>true</code> o <code>false</code>.</p><p>Notare anche la condizione tra parentesi dell'istruzione <code>if</code>: <code>n == 3</code>. Questa condizione confronta <code>n</code> e il numero 3. <code>==</code> è l'operatore di confronto ed è una delle numerose operazioni di confronto in C.</p><h3 id="if-else-nidificato"><strong><code>if...else</code> nidificato</strong></h3><p>Le istruzioni <code>if...else</code> consentono di scegliere tra due possibilità. Ma a volte devi scegliere tra tre o più possibilità.</p><p>Ad esempio, la funzione segno in matematica restituisce -1 se l'argomento è minore di zero, +1 se l'argomento è maggiore di zero e restituisce zero se l'argomento è zero.</p><p>Il codice seguente implementa questa funzione:</p><pre><code class="language-c">if (x &lt; 0)
   segno = -1;
else
   if (x == 0)
      segno = 0;
   else
      segno = 1;</code></pre><p>Come puoi vedere, una seconda istruzione <code>if...else</code> è annidata all'interno dell'istruzione <code>else</code> della prima <code>if..else</code>.</p><p>Se <code>x</code> è minore di 0, allora <code>segno</code> è impostato su -1. Invece, se <code>x</code> non è inferiore a 0, viene eseguita la seconda istruzione <code>if...else</code>. Lì, se <code>x</code> è uguale a 0, <code>segno</code> è anche impostato a 0. Ma se <code>x</code> è maggiore di 0, <code>segno</code> è invece impostato a 1.</p><p>Piuttosto che un'istruzione <code>if...else</code> nidificata, i principianti usano spesso una catena di istruzioni &nbsp;<code>if</code>:</p><pre><code class="language-c">if (x &lt; 0) {
   segno = -1;
}
   
if (x == 0) {
   segno = 0;
}
   
if (x &gt; 0) {
   segno = 1;
}</code></pre><p>Sebbene funzioni, non è consigliabile poiché non è chiaro che solo una delle istruzioni di assegnazione ( <code>segno = ...</code>) debba essere eseguita a seconda del valore di <code>x</code>. È anche inefficiente: ogni volta che il codice viene eseguito, tutte e tre le condizioni vengono verificate, anche se una o due non devono esserlo.</p><h3 id="istruzioni-else-if"><strong>Istruzioni else...if</strong></h3><p>Le istruzioni <code>if...else</code> sono un'alternativa a una catena di istruzioni <code>if</code>. Considera quanto segue:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
    int n = 5;

    if(n == 5) {
        printf("n è uguale a 5!\n");
    } 
    else if (n &gt; 5) {
        printf("n è maggiore di 5!\n");
    }

    return 0;
}</code></pre><p><strong>Output<strong>:</strong></strong></p><pre><code class="language-text">n è uguale a 5!</code></pre><p>Se la condizione per l'istruzione <code>if</code> risulta falsa, la condizione per l'istruzione <code>else...if</code> &nbsp;viene verificata. Se tale condizione restituisce vero, viene eseguito il codice all'interno delle parentesi graffe dell'istruzione <code>else...if</code>.</p><h3 id="operatori-di-confronto"><strong>Operatori di confronto</strong></h3><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">NOME DELL'OPERATORE</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">UTILIZZO</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">RISULTATO</font></font></th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Uguale a</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a == b</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">True se<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">è uguale a<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">b</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">, false altrimenti</font></font></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Non uguale a</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a != b</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">True se<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">diverso da<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">b</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">, false altrimenti</font></font></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Più grande di</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &gt; b</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">True se<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">è maggiore di<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">b</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">, false altrimenti</font></font></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Maggiore o uguale a</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &gt;= b</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">True se<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">è maggiore o uguale a<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">b</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">, false altrimenti</font></font></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Meno di</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &lt; b</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Vero se<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">è minore di<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">b</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">, falso in caso contrario</font></font></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Minore o uguale a</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &lt;= b</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">True se<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">è minore o uguale a<span>&nbsp;</span></font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">b</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">, false altrimenti</font></font></td></tr></tbody></table><!--kg-card-end: html--><h2 id="operatori-logici"><strong><strong><strong>Operatori logici</strong></strong></strong></h2><p>Potremmo voler eseguire un po' di codice se qualcosa non è vero, o se due cose sono vere. Per questo abbiamo gli operatori logici:</p><!--kg-card-begin: html--><table style="
    box-sizing: inherit;
    margin: 0.5em 0px 2.5em;
    padding: 0px;
    border: 0px;
    font-style: normal;
    font-variant-ligatures: normal;
    font-variant-caps: normal;
    font-variant-numeric: inherit;
    font-variant-east-asian: inherit;
    font-weight: 400;
    font-stretch: inherit;
    line-height: inherit;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
      Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
    font-size: 1.6rem;
    vertical-align: top;
    border-spacing: 0px;
    border-collapse: collapse;
    display: inline-block;
    overflow-x: auto;
    max-width: 100%;
    width: auto;
    white-space: nowrap;
    background: radial-gradient(
          at left center,
          rgba(0, 0, 0, 0.2) 0px,
          rgba(0, 0, 0, 0) 75%
        )
        0px center / 10px 100% no-repeat scroll,
      radial-gradient(
          at right center,
          rgba(0, 0, 0, 0.2) 0px,
          rgba(0, 0, 0, 0) 75%
        )
        100% center / 10px 100% scroll rgb(255, 255, 255);
    color: rgb(10, 10, 35);
    letter-spacing: normal;
    orphans: 2;
    text-align: start;
    text-transform: none;
    widows: 2;
    word-spacing: 0px;
    -webkit-text-stroke-width: 0px;
    text-decoration-thickness: initial;
    text-decoration-style: initial;
    text-decoration-color: initial;
  ">
  <thead style="
      box-sizing: inherit;
      margin: 0px;
      padding: 0px;
      border: 0px;
      font-style: inherit;
      font-variant: inherit;
      font-weight: inherit;
      font-stretch: inherit;
      line-height: inherit;
      font-family: inherit;
      font-size: 16px;
      vertical-align: baseline;
    ">
    <tr style="
        box-sizing: inherit;
        margin: 0px;
        padding: 0px;
        border: 0px;
        font-style: inherit;
        font-variant: inherit;
        font-weight: inherit;
        font-stretch: inherit;
        line-height: inherit;
        font-family: inherit;
        font-size: 16px;
        vertical-align: baseline;
      ">
      <th style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: 700;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 1.2rem;
          vertical-align: baseline;
          color: var(--gray85);
          letter-spacing: 0.2px;
          text-align: left;
          text-transform: uppercase;
          background-color: var(--gray10);
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">NOME DELL'OPERATORE</font></font>
      </th>
      <th style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: 700;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 1.2rem;
          vertical-align: baseline;
          color: var(--gray85);
          letter-spacing: 0.2px;
          text-align: left;
          text-transform: uppercase;
          background-color: var(--gray10);
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">UTILIZZO</font></font>
      </th>
      <th style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: 700;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 1.2rem;
          vertical-align: baseline;
          color: var(--gray85);
          letter-spacing: 0.2px;
          text-align: left;
          text-transform: uppercase;
          background-color: var(--gray10);
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">RISULTATO</font></font>
      </th>
    </tr>
  </thead>
  <tbody style="
      box-sizing: inherit;
      margin: 0px;
      padding: 0px;
      border: 0px;
      font-style: inherit;
      font-variant: inherit;
      font-weight: inherit;
      font-stretch: inherit;
      line-height: inherit;
      font-family: inherit;
      font-size: 16px;
      vertical-align: baseline;
    ">
    <tr style="
        box-sizing: inherit;
        margin: 0px;
        padding: 0px;
        border: 0px;
        font-style: inherit;
        font-variant: inherit;
        font-weight: inherit;
        font-stretch: inherit;
        line-height: inherit;
        font-family: inherit;
        font-size: 16px;
        vertical-align: baseline;
      ">
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
          background-image: linear-gradient(
            to right,
            rgb(255, 255, 255) 50%,
            rgba(255, 255, 255, 0) 100%
          );
          background-size: 20px 100%;
          background-repeat: no-repeat;
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">Not (<span>&nbsp;</span></font></font><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">!</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">)</font></font>
      </td>
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
        ">
        <code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">!(a == 3)</code>
      </td>
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
          background-image: linear-gradient(
            to left,
            rgb(255, 255, 255) 50%,
            rgba(255, 255, 255, 0) 100%
          );
          background-position: 100% 0px;
          background-size: 20px 100%;
          background-repeat: no-repeat;
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">Vero se<span>&nbsp;</span></font><strong style="
              box-sizing: inherit;
              margin: 0px;
              padding: 0px;
              border: 0px;
              font-style: inherit;
              font-variant: inherit;
              font-weight: 700;
              font-stretch: inherit;
              line-height: inherit;
              font-family: inherit;
              font-size: 16px;
              vertical-align: baseline;
              color: var(--gray85);
            "><font style="box-sizing: inherit; vertical-align: inherit"></font></strong></font><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">a</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit"><span>&nbsp;</span>è<span>&nbsp;</span></font><font style="box-sizing: inherit; vertical-align: inherit">non uguale a 3</font></font><strong style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 700;
            font-stretch: inherit;
            line-height: inherit;
            font-family: inherit;
            font-size: 16px;
            vertical-align: baseline;
            color: var(--gray85);
          "><font style="box-sizing: inherit; vertical-align: inherit"></font></strong><font style="box-sizing: inherit; vertical-align: inherit"></font>
      </td>
    </tr>
    <tr style="
        box-sizing: inherit;
        margin: 0px;
        padding: 0px;
        border: 0px;
        font-style: inherit;
        font-variant: inherit;
        font-weight: inherit;
        font-stretch: inherit;
        line-height: inherit;
        font-family: inherit;
        font-size: 16px;
        vertical-align: baseline;
      ">
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
          background-image: linear-gradient(
            to right,
            rgb(255, 255, 255) 50%,
            rgba(255, 255, 255, 0) 100%
          );
          background-size: 20px 100%;
          background-repeat: no-repeat;
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">And (<span>&nbsp;</span></font></font><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">&amp;&amp;</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">)</font></font>
      </td>
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
        ">
        <code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">a == 3 &amp;&amp; b == 6</code>
      </td>
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
          background-image: linear-gradient(
            to left,
            rgb(255, 255, 255) 50%,
            rgba(255, 255, 255, 0) 100%
          );
          background-position: 100% 0px;
          background-size: 20px 100%;
          background-repeat: no-repeat;
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">Vero se<span>&nbsp;</span></font></font><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">a</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit"> è uguale a 3<span>&nbsp;</span></font></font><strong style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 700;
            font-stretch: inherit;
            line-height: inherit;
            font-family: inherit;
            font-size: 16px;
            vertical-align: baseline;
            color: var(--gray85);
          "><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">ed</font></font></strong><span>&nbsp;</span><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">b</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit"><span>&nbsp;</span>è uguale a 6</font></font>
      </td>
    </tr>
    <tr style="
        box-sizing: inherit;
        margin: 0px;
        padding: 0px;
        border: 0px;
        font-style: inherit;
        font-variant: inherit;
        font-weight: inherit;
        font-stretch: inherit;
        line-height: inherit;
        font-family: inherit;
        font-size: 16px;
        vertical-align: baseline;
      ">
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
          background-image: linear-gradient(
            to right,
            rgb(255, 255, 255) 50%,
            rgba(255, 255, 255, 0) 100%
          );
          background-size: 20px 100%;
          background-repeat: no-repeat;
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">Or (<span>&nbsp;</span></font></font><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">||</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">)</font></font>
      </td>
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
        ">
        <code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">a == 2 || b == 4</code>
      </td>
      <td style="
          box-sizing: inherit;
          margin: 0px;
          padding: 6px 12px;
          border: var(--gray10) 1px solid;
          font-style: inherit;
          font-variant: inherit;
          font-weight: inherit;
          font-stretch: inherit;
          line-height: inherit;
          font-family: inherit;
          font-size: 16px;
          vertical-align: baseline;
          background-image: linear-gradient(
            to left,
            rgb(255, 255, 255) 50%,
            rgba(255, 255, 255, 0) 100%
          );
          background-position: 100% 0px;
          background-size: 20px 100%;
          background-repeat: no-repeat;
        ">
        <font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">Vero se<span>&nbsp;</span></font></font><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">a</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit"> è uguale a 2<span>&nbsp;</span></font></font><strong style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 700;
            font-stretch: inherit;
            line-height: inherit;
            font-family: inherit;
            font-size: 16px;
            vertical-align: baseline;
            color: var(--gray85);
          "><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit">o</font></font></strong><span>&nbsp;</span><code style="
            box-sizing: inherit;
            margin: 0px;
            padding: 0px 5px 2px;
            border: 0px;
            font-style: inherit;
            font-variant: inherit;
            font-weight: 400 !important;
            font-stretch: inherit;
            line-height: 1em;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.8em;
            vertical-align: baseline;
            background: var(--gray15);
          ">b</code><font style="box-sizing: inherit; vertical-align: inherit"><font style="box-sizing: inherit; vertical-align: inherit"><span>&nbsp;</span>è uguale a 4</font></font>
      </td>
    </tr>
  </tbody>
</table>

<!--kg-card-end: html--><p>Per esempio:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
    int n = 5;
    int m = 10;

    if(n &gt; m || n == 15) {
        printf("n è maggiore di m, oppure n è uguale a 15\n");
    } 
    else if( n == 5 &amp;&amp; m == 10 ) {
        printf("n è uguale a 5 e m è uguale a 10!\n");
    } 
    else if ( !(n == 6)) {
        printf("Non è vero che n è uguale a 6!\n");
    }
    else if (n &gt; 5) {
        printf("n è maggiore di 5!\n");
    }

    return 0;
}</code></pre><p><strong>Output<strong>:</strong></strong></p><pre><code class="language-text">n è uguale a 5 e m è uguale a 10!</code></pre><p><strong>Una nota importante sui confronti in C</strong></p><p>Abbiamo accennato in precedenza che ogni confronto controlla se qualcosa è vero o falso, ma questo è vero solo in parte. C è molto leggero e vicino all'hardware su cui è in esecuzione. Con l'hardware è facile verificare se qualcosa è 0 o falso, ma verificare qualsiasi altra cosa è molto più difficile.</p><p>Invece è molto più accurato dire che i confronti stanno davvero controllando se qualcosa è 0 / false o se è un altro valore.</p><p>Ad esempio, questa istruzione<em> if</em> &nbsp;è vera e valida:</p><pre><code class="language-c">if(12452) {
    printf("Questa è vera!\n")
}</code></pre><p>In base alla progettazione, 0 è falso e, per convenzione, 1 è vero. Infatti, dando uno sguardo alla libreria <code>stdbool.h</code>:</p><pre><code class="language-c">#define false   0
#define true    1</code></pre><p>Anche se c'è molto altro, questo è il fulcro di come funzionano i booleani e di come funziona la libreria. Queste due righe indicano al compilatore di sostituire la parola <code>false</code> con 0 e <code>true</code> con 1.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ C vs C++: Qual è la differenza? ]]>
                </title>
                <description>
                    <![CDATA[ I linguaggi di programmazione C e C++ nel mondo alimentano gran parte dei prodotti, delle applicazioni e dei siti Web. Ciascuno ha contribuito a gettare le basi per la creazione di molti dei più popolari linguaggi di programmazione, come Java. Supportano anche molti linguaggi che potresti usare regolarmente per i ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/c-vs-cpp-qual-e-la-differenza/</link>
                <guid isPermaLink="false">620bf6b288090d0542dcb8e8</guid>
                
                    <category>
                        <![CDATA[ Programmazione C ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angelo Mirabelli ]]>
                </dc:creator>
                <pubDate>Fri, 25 Feb 2022 08:15:19 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/02/vanesa-giaconi-n1nwTr_-lH4-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/c-vs-cpp-whats-the-difference/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">C vs C++ – What's The Difference?</a>
      </p><p>I linguaggi di programmazione C e C++ nel mondo alimentano gran parte dei prodotti, delle applicazioni e dei siti Web.</p><p>Ciascuno ha contribuito a gettare le basi per la creazione di molti dei più popolari linguaggi di programmazione, come Java. Supportano anche molti linguaggi che potresti usare regolarmente per i tuoi progetti di programmazione, come Python.</p><p>In questo articolo troverai una panoramica generale dei due linguaggi, adatta ai principianti, &nbsp;insieme alle loro principali somiglianze e differenze.</p><h2 id="le-origini-di-c-e-di-c-"><strong>Le origini di C e di C++</strong></h2><h3 id="la-storia-del-linguaggio-di-programmazione-c"><strong>La storia del linguaggio di programmazione C</strong></h3><p>Ken Thompson e Dennis Ritchie hanno lavorato per diversi anni al progetto MULTICS (Multiplexed Information and Computing Service) presso AT&amp;T Bell Laboratories.</p><p>Dopo che il progetto si è interrotto, nel 1969 Ken Thompson ha iniziato a lavorare al suo gioco <em><em>Space Travel</em></em> su una macchina PDP-7 poco usata.</p><p>Nel farlo, ha finito per scrivere un sistema operativo quasi completo, Unix, da zero, in linguaggio assembly.</p><p>Durante il lavoro su MULTICS, sia Thompson che Ritchie scrivevano software di sistema e programmi di utilità utilizzando linguaggi di livello superiore. E avevano visto quanto fosse più semplice l'intero processo, rispetto al linguaggio assembly, criptico e difficile da decifrare.</p><p>Ritchie si unì a Thompson per aiutarlo a portare Unix su una macchina più recente: il PDP-11.</p><p>Durante quel periodo sperimentarono vari linguaggi di livello superiore che avrebbero potuto aiutarli a portare a termine il lavoro.</p><p>Hanno usato BCPL (Basic Combined Programming Language), che è stato ampiamente utilizzato durante l'era MULTICS. Dopo averlo provato, Thompson finì per scrivere un nuovo linguaggio: il linguaggio di programmazione B.</p><p>Il linguaggio B era simile a BCPL ma era una versione più semplice e ridotta.</p><p>Ma B non era abbastanza potente e non sfruttava appieno le nuove funzionalità e la potenza del PDP-11.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/11/Ken_Thompson_-sitting-_and_Dennis_Ritchie_at_PDP-11_-2876612463-.jpg" class="kg-image" alt="Ken_Thompson_-seduto-_e_Dennis_Ritchie_at_PDP-11_-2876612463-" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Thompson (seduto) e Ritchie lavorano insieme a un PDP-11. </font></font><a href="https://en.wikipedia.org/wiki/Ken_Thompson#/media/File:Ken_Thompson_(sitting)_and_Dennis_Ritchie_at_PDP-11_(2876612463).jpg" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 17.6px; vertical-align: baseline; background-color: transparent; color: var(--gray90); text-decoration: underline; cursor: pointer; word-break: break-word;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Credito immagine e testo da Wikipedia</font></font></a></figcaption></figure><p>Dennis Ritchie iniziò a migliorare il linguaggio B e finì per creare il linguaggio di programmazione C.</p><p>C è un linguaggio portabile, il che significa che i programmi scritti in C possono essere trasferiti e utilizzati su una varietà di architetture di macchine. È molto veloce e facile da compilare e ha una mappatura diretta sul codice macchina, dando al programmatore l'accesso a funzionalità di basso livello.</p><p>Finirono per riscrivere il sistema operativo Unix in C nel 1972.</p><p>Poiché C era portatile ed era il linguaggio su cui Unix era implementato, gli sviluppatori iniziarono ad adottarlo e a usarlo ampiamente. Ciò ha portato al successo del sistema operativo Unix e, a sua volta, il linguaggio C è diventato popolare.</p><p>Dennis Ritchie e Brian Kernighan sono stati co-autori del libro "Linguaggio di programmazione C" nel 1977, che ha creato uno standard per come dovrebbe essere usato il linguaggio. Questo libro ha reso ancora più popolare la lingua.</p><p>C è estremamente significativo nella storia dell'informatica e la sua creazione ha portato alla creazione di molti altri linguaggi di programmazione. Per questo, viene spesso definita la "<em><em>madre</em></em> " di tutti i linguaggi di programmazione.</p><h3 id="storia-di-c-"><strong>Storia di C++</strong></h3><p>Nel 1979, il ricercatore Bjarne Stroustrup è stato assunto presso AT&amp;T Bell Laboratories.</p><p>Durante gli anni '70 la complessità e la potenza di calcolo dei computer aumentarono e iniziarono a sorgere limitazioni nel linguaggio di programmazione C.</p><p>All'inizio degli anni '80, Bjarne Stroustrup creò un nuovo linguaggio caratterizzato da due cose:</p><ul><li>Le capacità di programmazione orientata agli oggetti di un altro linguaggio, Simula, che offriva un approccio diverso alla programmazione rispetto a C. Il codice poteva essere astratto e meglio organizzato e qualsiasi cosa poteva essere rappresentata usando le classi.</li><li>Il linguaggio di programmazione dei sistemi, C, che offriva la possibilità di avvicinarsi molto all'hardware della macchina e di svolgere compiti computazionali impegnativi di basso livello.</li></ul><p>Queste due idee combinate hanno consentito un'astrazione di livello superiore senza perdere l'efficienza del basso livello di C. Quindi, è stato creato il linguaggio "<em><em>C con classi</em></em> ".</p><p>Nel 1984 "C con classi" è stato rinominato in C++.</p><p>Quindi, C++ è un superset di C, il che significa che è <em><em>un'estensione</em></em> di C e si basa su di esso. C++ fornisce solo funzionalità aggiuntive al linguaggio C.</p><h2 id="somiglianze-tra-c-e-c-"><strong>Somiglianze tra C e C++</strong></h2><p>Di seguito sono riportate alcune delle somiglianze tra C e C++.</p><h3 id="sintassi-e-struttura-del-codice"><strong>Sintassi e struttura del codice</strong></h3><p>La sintassi generale delle due lingue è molto simile. Gli operatori e le parole chiavi utilizzati in C vengono utilizzati anche in C++ per ottenere le stesse cose. Ma C++ ha più parole chiavi di C e ha una grammatica estesa.</p><p>I commenti in linea <code>//</code>, e i commenti di blocco, <code><em>/</em>* */</code>, hanno lo stesso aspetto.</p><p>Inoltre, ogni istruzione termina con un punto e virgola, <code>;</code>.</p><p>Condizionali, cicli, inizializzazione e dichiarazione di variabili: sono del tutto simili nei due linguaggi.</p><p>Sia C che C++ hanno un metodo <code>main()</code>, che avvia ogni programma, ed entrambi includono file di intestazione nella parte superiore dei rispettivi file, con <code>#include</code>.</p><h3 id="linguaggi-di-programmazione-compilati"><strong>Linguaggi di programmazione compilati</strong></h3><p>Sia C che C++ sono linguaggi di programmazione compilati.</p><p>Un compilatore è un programma software per computer.</p><p>Prende il codice sorgente che un programmatore ha scritto in un linguaggio di programmazione di livello superiore e lo <em><em>traduce</em></em> in un altro linguaggio comprensibile al computer.</p><p>Questo modulo è il primo codice assembly che viene nuovamente tradotto in codice macchina, la lingua nativa di tutti i computer.</p><p>Il linguaggio macchina è un insieme di istruzioni che vengono comprese direttamente dalla CPU (Central Processing Unit) di un computer.</p><p>Una volta che il codice sorgente è stato tradotto in codice macchina, viene creato un file eseguibile binario <code>a.out</code>.</p><h2 id="differenze-tra-c-e-c-"><strong>Differenze tra C e C++</strong></h2><p>Ora diamo un'occhiata ad alcune delle differenze tra i due linguaggi.</p><h3 id="metodi-di-input-e-output"><strong>Metodi di input e output</strong></h3><p>C e C++ utilizzano modi diversi per inviare informazioni alla console e ricevere informazioni dall'utente.</p><p>In C, <code>scanf()</code> viene utilizzato per l'input dell'utente, mentre <code>printf()</code> viene utilizzato per l'output dei dati.</p><p>In C++, <code>std::cin &gt;&gt;</code> viene utilizzato per ottenere l'input dell'utente e <code>std::cout &lt;&lt;</code> viene utilizzato per l'output dei dati.</p><h3 id="il-paradigma-della-programmazione"><strong>Il paradigma della programmazione</strong></h3><p>La differenza più importante tra i due linguaggi è il diverso approccio alla programmazione che ciascuno utilizza.</p><p>C è un <strong><strong>linguaggio a orientamento procedurale</strong></strong> e la sua enfasi è sulle funzioni.</p><p>I programmi sono suddivisi in un insieme di funzioni e sono costituiti da istruzioni passo passo, o comandi, da eseguire in ordine sequenziale.</p><p>Questo stile di programmazione specifica <em><em>come</em></em> fare qualcosa, fornendo passaggi strutturati per come verranno eseguiti i compiti di calcolo, seguendo un approccio dall'alto verso il basso.</p><p>Questo stile di programmazione può diventare piuttosto disordinato e soggetto a errori quando i programmi crescono di dimensioni. Porta a molte operazioni di copia e incolla in tutto il file e all'aggiornamento di molte funzioni quando viene apportata una modifica.</p><p>Oltre ad essere un linguaggio procedurale, C++ è anche un <strong><strong>linguaggio di programmazione orientato agli oggetti</strong></strong> , che si basa sul concetto di immergere un programma negli oggetti.</p><p>Tutto è organizzato e suddiviso in piccoli gruppi di parti o <em><em>oggetti</em></em> correlati , che sono un'istanza di una <em><em>classe</em></em> , seguendo un approccio bottom-up.</p><p>La programmazione orientata agli oggetti si basa su quattro principi: <em><em>incapsulamento, astrazione, ereditarietà e polimorfismo</em></em> .</p><p>Questo stile di programmazione crea codice leggibile e utilizzabile in misura maggiore e quindi più facile da mantenere, fornendo anche una migliore sicurezza dei dati.</p><h3 id="l-stl"><strong>L'STL</strong></h3><p>C++ offre STL – Standard Template Library – e C no.</p><p>Fornisce classi modello per le strutture dati e i componenti di uso comune per l'implementazione di funzionalità integrate aggiuntive.</p><p>Uno di questi componenti sono i contenitori come i <a href="https://www.freecodecamp.org/news/c-vector-std-pattern-vector-in-cpp-with-example-code/">Vettori</a> , che memorizzano raccolte di oggetti.</p><h3 id="namespaces"><strong>Namespaces</strong></h3><p>Gli spazi dei nomi sono una funzionalità disponibile in C++ e non in C.</p><p>Sono contenitori utilizzati per organizzare il codice in gruppi logici di identificatori e oggetti simili sotto un nome, all'interno di un ambito.</p><p>Impediscono la collisione dei nomi quando sono presenti più librerie e prevengono il conflitto con i nomi di altri spazi dei nomi all'interno di un programma.</p><p>Un esempio di spazio dei nomi è <code>std::</code>.</p><p>Un modo per utilizzare uno spazio dei nomi e introdurlo in un ambito consiste nell'utilizzare la parola chiave <code>using</code>, ad esempio <code>using namespace std;</code>.</p><h3 id="gestione-delle-eccezioni"><strong>Gestione delle eccezioni</strong></h3><p>C non offre un modo per gestire le eccezioni nei programmi, cosa che invece aiuta a prevenire gli errori.</p><p>C++, invece, supporta la gestione delle eccezioni introducendo i blocchi <code>try</code> e <code>catch</code></p><h3 id="estensione-del-file"><strong>Estensione del file</strong></h3><p>L'estensione del file per un file che contiene il codice C è <code>.c</code>, mentre l'estensione del file per i file C++ è <code>.cpp</code>.</p><h2 id="dove-vengono-utilizzati-c-e-c-"><strong>Dove vengono utilizzati C e C++?</strong></h2><p>C è comunemente usato per compiti di calcolo molto impegnativi e di basso livello in cui velocità, efficienza e accesso ravvicinato alla macchina sono indispensabili.</p><p>C presuppone che i programmatori sappiano cosa stanno facendo e da loro la massima &nbsp;libertà.</p><p>È quindi il linguaggio preferito per sistemi operativi, dispositivi embedded, programmazione di sistemi, kernel e driver, sviluppo di compilatori e per l'industria in crescita delle applicazioni IoT (Internet of Things).</p><p>C++ ancora una volta consente al programmatore sia un accesso ravvicinato che la manipolazione della macchina, fornendo al contempo efficienza e prestazioni elevate per sistemi su larga scala. Allo stesso tempo, è di livello superiore con un'astrazione sufficiente dalla macchina.</p><p>C++ è un linguaggio popolare usato per la creazione di motori di gioco, computer grafica e programmi, applicazioni VR, browser Web come Google Chrome, Mozilla Firefox e Safari ed estensioni del browser Web. Anche il motore di ricerca di Google è costruito in C++.</p><h2 id="come-imparare-c-e-c-"><strong>Come imparare C e C++</strong></h2><p>Di seguito è riportato un elenco di alcune risorse per aiutarti a iniziare il tuo percorso di apprendimento in C e C++.</p><p>Per imparare C:</p><ul><li><a href="https://www.freecodecamp.org/italian/news/manuale-c-per-principianti-impara-le-basi-del-linguaggio-di-programmazione-c-in-poche-ore/">Manuale C per principianti: impara le basi del linguaggio di programmazione C in poche ore</a></li><li><a href="https://www.freecodecamp.org/italian/news/il-linguaggio-di-programmazione-c-un-tutorial-per-principianti/"></a><a href="https://www.freecodecamp.org/news/what-is-the-c-programming-language-beginner-tutorial/">I</a>l linguaggio di programmazione C – Un tutorial per principianti</li><li><a href="https://youtu.be/KJgsSFOSQv0">C Programming Tutorial for Beginners</a></li></ul><p>Per imparare C++:</p><ul><li><a href="https://www.freecodecamp.org/italian/news/il-linguaggio-di-programmazione-c/"></a><a href="https://www.freecodecamp.org/news/the-c-plus-plus-programming-language/"></a><a href="https://www.freecodecamp.org/italian/news/il-linguaggio-di-programmazione-c/">I</a>l linguaggio di programmazione C++</li><li><a href="https://youtu.be/vLnPwxZdW4Y">C++ Tutorial for Beginners - Full Course</a></li><li><a href="https://www.freecodecamp.org/news/learn-object-oriented-programming-oop-in-c-full-video-course/">Learn Object Oriented Programming (OOP) in C++ | Full Video Course</a></li><li><a href="https://www.freecodecamp.org/news/learn-modern-cpp-by-building-an-audio-plugin/">Learn Modern C++ by Building an Audio Plugin</a></li></ul><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Grazie per essere arrivato alla fine e spero che questo articolo ti sia stato utile.</p><p>Hai appreso le origini di C e C++ e il loro background storico. Hai quindi visto alcune delle loro somiglianze e differenze, come viene utilizzato ogni linguaggio e alcune risorse per iniziare ad imparare le lingue.</p><p>Buona codifica!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Manuale C per principianti: impara le basi del linguaggio di programmazione C in poche ore ]]>
                </title>
                <description>
                    <![CDATA[ Questo manuale per principianti in C segue la regola 80/20. Imparerai l'80% del linguaggio di programmazione C nel 20% del tempo. Tale approccio ti darà una panoramica completa della lingua. Questo manuale non cerca di coprire tutti i concetti relativi al C. Si concentra sul nucleo del linguaggio, cercando di ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/manuale-c-per-principianti-impara-le-basi-del-linguaggio-di-programmazione-c-in-poche-ore/</link>
                <guid isPermaLink="false">620a99a388090d0542dcb310</guid>
                
                    <category>
                        <![CDATA[ Programmazione C ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angelo Mirabelli ]]>
                </dc:creator>
                <pubDate>Thu, 24 Feb 2022 10:39:32 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2022/02/coverc-1-opt.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/the-c-beginners-handbook/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The C Beginner's Handbook: Learn C Programming Language basics in just a few hours</a>
      </p><p>Questo manuale per principianti in C segue la regola 80/20. Imparerai l'80% del linguaggio di programmazione C nel 20% del tempo.</p><p>Tale approccio ti darà una panoramica completa della lingua.</p><p>Questo manuale non cerca di coprire tutti i concetti relativi al C. Si concentra sul nucleo del linguaggio, cercando di semplificare gli argomenti più complessi.</p><p>E nota: <a href="https://flaviocopes.com/page/c-handbook/">puoi ottenere una versione in inglese in PDF ed ePub di questo Manuale C per principianti qui</a>.</p><p>Divertiti!</p><h2 id="sommario"><strong>Sommario</strong></h2><ol><li><a href="#introduzione-a-c">Introduzione a C</a></li><li><a href="#variabili-e-tipi">Variabili e tipi</a></li><li><a href="#costanti">Costanti</a></li><li><a href="#operatori">Operatori</a></li><li><a href="#condizionali">Condizionali</a></li><li><a href="#cicli">Cicli</a></li><li><a href="#array">Array</a></li><li><a href="#stringhe">Stringhe</a></li><li><a href="#puntatori">Puntatori</a></li><li><a href="#funzioni">Funzioni</a></li><li><a href="#input-e-output">Input e output</a></li><li><a href="#ambito-delle-variabili">Ambito delle variabili</a></li><li><a href="#variabili-statiche">Variabili statiche</a></li><li><a href="#variabili-globali">Variabili globali</a></li><li><a href="#definizioni-di-tipo">Definizioni di tipo</a></li><li><a href="#tipi-enumerati">Tipi enumerati</a></li><li><a href="#strutture">Strutture</a></li><li><a href="#parametri-della-riga-di-comando">Parametri della riga di comando</a></li><li><a href="#file-di-intestazione">File di intestazione</a></li><li><a href="#il-preprocessore">Il preprocessore</a></li><li><a href="#conclusione">Conclusione</a></li></ol><h2 id="introduzione-a-c"><strong>Introduzione a C</strong></h2><p>C è probabilmente il linguaggio di programmazione più conosciuto. È usato come linguaggio di riferimento per i corsi di informatica in tutto il mondo ed è probabilmente il linguaggio che le persone imparano di più a scuola insieme a Python e Java.</p><p>Ricordo che era il mio secondo linguaggio di programmazione in assoluto, dopo Pascal.</p><p>C non è solo ciò che gli studenti usano per imparare a programmare. Non è un linguaggio accademico. E direi che non è il linguaggio più semplice, perché C è un linguaggio di programmazione di basso livello.</p><p>Oggi, C è ampiamente utilizzato nei dispositivi embedded e lo si trova &nbsp;nella maggior parte dei server Internet, che sono costruiti utilizzando Linux. Il kernel Linux è costruito usando C, e questo significa anche che C alimenta il core di tutti i dispositivi Android. Possiamo dire che il codice C lo troviamo quasi ovunque nel mondo intero. Proprio adesso. Abbastanza notevole.</p><p>Quando è stato creato, C era considerato un linguaggio di alto livello, perché era portabile su tutte le macchine. Oggi diamo per scontato di poter eseguire un programma scritto su un Mac su Windows o Linux, magari usando Node.js o Python.</p><p>Una volta non era affatto così. Quello che C ha portato al tavolo era un linguaggio semplice da implementare e che aveva un compilatore che poteva essere facilmente trasferito su macchine diverse.</p><p>Ho detto compilatore: C è un linguaggio di programmazione compilato, come Go, Java, Swift o Rust. &nbsp;Altri popolari linguaggi di programmazione come Python, Ruby o JavaScript, vengono interpretati. La differenza è consistente: un linguaggio compilato genera un file binario che può essere direttamente eseguito e distribuito.</p><p>C non ha il <em>garbage collection</em>. Ciò significa che dobbiamo gestire la memoria da soli. È un compito complesso e che richiede molta attenzione per prevenire bug, ma è anche ciò che rende C ideale per scrivere programmi per dispositivi embedded come Arduino.</p><p>C non nasconde la complessità e le capacità della macchina sottostante. Hai molto potere su di essa, una volta che sai cosa puoi fare.</p><p>Voglio introdurre ora il primo programma C, che chiameremo "Hello, World!"</p><p>hello.c</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
    printf("Hello, World!");
}
</code></pre><p>Descriviamo il codice sorgente del programma: importiamo prima la libreria <code>stdio</code> (il nome sta per libreria standard input-output ).</p><p>Questa libreria ci dà accesso alle funzioni di input/output.</p><p>C è un linguaggio molto piccolo al suo interno e tutto ciò che non fa parte del nucleo è fornito dalle librerie. Alcune di queste librerie sono costruite da normali programmatori e rese disponibili per l'uso da parte di altri. Alcune altre librerie sono integrate nel compilatore. Come <code>stdio</code> e altre.</p><p><code>stdio</code> è la libreria che fornisce la funzione <code>printf()</code>.</p><p>Questa funzione è racchiusa in una funzione <code>main()</code>. La funzione <code>main()</code> è il punto di ingresso di qualsiasi programma C.</p><p>Ma, comunque, cos'è una funzione?</p><p>Una funzione è una routine che accetta uno o più argomenti e restituisce un singolo valore.</p><p>Nel caso di <code>main()</code>, la funzione non ottiene argomenti e restituisce un numero intero. Indichiamo questo usando la parola chiave <code>void</code> per l'argomento e la parola chiave <code>int</code> per il valore restituito.</p><p>La funzione ha un corpo racchiuso tra parentesi graffe. All'interno del corpo abbiamo tutto il codice di cui la funzione ha bisogno per svolgere le sue operazioni.</p><p>La funzione <code>printf()</code> è scritta in modo diverso, come puoi vedere. Non ha un valore di ritorno definito e passiamo una stringa, racchiusa tra virgolette. Non abbiamo specificato il tipo di argomento.</p><p>Questo perché questa è una chiamata di funzione. Da qualche parte, all'interno della libreria <code>stdio</code>, <code>printf</code> è definito come</p><pre><code class="language-c">int printf(const char *format, ...);
</code></pre><p>Non c'è bisogno ora di capire cosa significhi, ma semplificando, questa è la definizione. E quando chiamiamo <code>printf("Hello, World!");</code>, è qui che viene eseguita la funzione.</p><p>La funzione <code>main()</code> che abbiamo definito sopra:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
    printf("Hello, World!");
}
</code></pre><p>verrà eseguito dal sistema operativo al momento dell'esecuzione del programma.</p><p>Come eseguiamo un programma C?</p><p>Come accennato, C è un linguaggio compilato. Per eseguire il programma dobbiamo prima compilarlo. Qualsiasi computer Linux o macOS è già dotato di un compilatore C integrato. Per Windows, puoi utilizzare il sottosistema Windows per Linux (WSL).</p><p>In ogni caso, quando apri la finestra del terminale puoi digitare <code>gcc</code>, e questo comando dovrebbe restituire un errore dicendo che non hai specificato alcun file:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.10.50.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.10.50" width="600" height="400" loading="lazy"></figure><p>Va bene. Significa che il compilatore C è lì e possiamo iniziare a usarlo.</p><p>Ora scrivi le righe del programma di sopra in un file <code>hello.c</code>. Puoi usare qualsiasi editor, ma io per semplicità userò l'editor <code>nano</code> dalla riga di comando:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.11.39.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.11.39" width="600" height="400" loading="lazy"></figure><p>Digita il programma:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.16.52.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.16.52" width="600" height="400" loading="lazy"></figure><p>Ora premi <code>ctrl-X</code> per uscire:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.18.11.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-18.10.11" width="600" height="400" loading="lazy"></figure><p>Conferma premendo il tasto <code>y</code>, quindi premi invio per confermare il nome del file:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.18.15.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.18.15" width="600" height="400" loading="lazy"></figure><p>Ecco fatto, ora torniamo al terminale:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.13.46.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.13.46" width="600" height="400" loading="lazy"></figure><p>Ora digita</p><pre><code class="language-sh">gcc hello.c -o hello
</code></pre><p>Il programma non dovrebbe darti errori:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.16.31.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.16.31" width="600" height="400" loading="lazy"></figure><p>ma dovrebbe averti generato un eseguibile di nome <code>hello</code>. Ora digita</p><pre><code class="language-sh">./hello
</code></pre><p>per eseguirlo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.19.20.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.19.20" width="600" height="400" loading="lazy"></figure><p>Aggiungo <code>./</code> al nome del programma per dire al terminale che il comando si trova nella cartella corrente</p><p>Fantastico!</p><p>Ora se chiami <code>ls -al hello</code>, puoi vedere che il programma ha una dimensione di soli 12 KB:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/03/Screen-Shot-2020-01-29-at-10.19.55.png" class="kg-image" alt="Screen-Shot-2020-01-29-at-10.19.55" width="600" height="400" loading="lazy"></figure><p>Questo è uno dei vantaggi di C: è altamente ottimizzato e questo è anche uno dei motivi per cui è così buono per i dispositivi embedded che hanno una quantità molto limitata di risorse.</p><h2 id="variabili-e-tipi"><strong>Variabili e tipi</strong></h2><p>C è un linguaggio tipizzato staticamente.</p><p>Ciò significa che ogni variabile ha un tipo associato e questo tipo è noto al momento della compilazione.</p><p>Questo è molto diverso da come lavori con le variabili in Python, JavaScript, PHP e altri linguaggi interpretati.</p><p>Quando crei una variabile in C, devi specificare il tipo di variabile nella dichiarazione.</p><p>In questo esempio inizializziamo una variabile <code>age</code> di tipo <code>int</code>:</p><pre><code class="language-c">int age;
</code></pre><p>Un nome di variabile può contenere qualsiasi lettera maiuscola o minuscola, può contenere cifre e il trattino basso, ma non può iniziare con una cifra. <code>AGE</code> e <code>Age10</code> sono nomi di variabili validi, <code>1age</code> non lo è.</p><p>Puoi anche inizializzare una variabile nella dichiarazione, specificando il valore iniziale:</p><pre><code class="language-c">int age = 37;
</code></pre><p>Una volta dichiarata una variabile, puoi usarla nel codice del tuo programma. Puoi modificarne il valore in qualsiasi momento, utilizzando ad esempio l'operatore <code>=</code>, come in <code>age = 100;</code> (a condizione che il nuovo valore sia dello stesso tipo).</p><p>In questo caso:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
    int age = 0;
    age = 37.2;
    printf("%u", age);
}
</code></pre><p>il compilatore genererà un avviso in fase di compilazione e convertirà il numero decimale in un valore intero.</p><p>I tipi di dati incorporati in C sono <code>int</code> , <code>char</code>, <code>short</code>, <code>long</code>, <code>float</code>, <code>double</code>, <code>long double</code>. Scopriamo di più su questi tipi di dato.</p><h3 id="numeri-interi"><strong>Numeri interi</strong></h3><p>C fornisce i seguenti tipi per definire valori interi:</p><ul><li><code>char</code></li><li><code>int</code></li><li><code>short</code></li><li><code>long</code></li></ul><p>Nella maggior parte dei casi, utilizzerai un <code>int</code> per memorizzare un numero intero. Ma in alcuni casi, potresti voler scegliere una delle altre 3 opzioni.</p><p>Il tipo <code>char</code> è comunemente usato per memorizzare le lettere della tabella ASCII, ma può essere utilizzato per contenere numeri interi piccoli da <code>-128</code> a <code>127</code>. Occupa almeno 1 byte.</p><p><code>int</code> occupa almeno 2 byte. <code>short</code> occupa almeno 2 byte. <code>long</code> occupa almeno 4 byte.</p><p>Come puoi vedere, non ci vengono garantiti gli stessi valori per ambienti diversi. Abbiamo solo un'indicazione. Il problema è che i numeri esatti che possono essere memorizzati in ciascun tipo di dati dipendono dall'implementazione e dall'architettura.</p><p>Ci viene garantito che <code>short</code> non è più lungo di <code>int</code>. E ci viene garantito che <code>long</code> non è più breve di <code>int</code>.</p><p>La specifica standard ANSI C determina i valori minimi di ogni tipo e grazie ad esso possiamo almeno sapere qual è il valore minimo che possiamo aspettarci di avere a nostra disposizione.</p><p>Se stai programmando C in ambiente Arduino, una scheda diversa avrà limiti diversi.</p><p>Su una scheda Arduino Uno, <code>int</code> occupa uno spazio di memoria di 2 byte, che va da <code>-32,768</code> a <code>32,767</code>. Su un Arduino MKR 1010, <code>int</code> occupa uno spazio di memoria di 4 byte, che va da <code>-2,147,483,648</code> a <code>2,147,483,647</code>. Una bella differenza.</p><p>Su tutte le schede Arduino, <code>short</code> occupa uno spazio di memoria di 2 byte, che va da <code>-32,768</code> a <code>32,767</code>. <code>long</code> occupa uno spazio di memoria di 4 byte, che va da <code>-2,147,483,648</code> a <code>2,147,483,647</code>.</p><h3 id="interi-senza-segno"><strong>Interi senza segno</strong></h3><p>Per tutti i tipi di dati di cui sopra, possiamo anteporre <code>unsigned</code> per iniziare l'intervallo da 0, invece di un numero negativo. Questo potrebbe avere senso in molti casi.</p><ul><li><code>unsigned char</code> andrà da <code>0</code> ad almeno <code>255</code></li><li><code>unsigned int</code> andrà da <code>0</code> ad almeno <code>65,535</code></li><li><code>unsigned short</code> andrà da <code>0</code> ad almeno <code>65,535</code></li><li><code>unsigned long</code> andrà da <code>0</code> ad almeno<code>4,294,967,295</code></li></ul><h3 id="il-problema-dell-overflow"><strong>Il problema dell'overflow</strong></h3><p>Dati tutti questi limiti, potrebbe sorgere una domanda: come possiamo assicurarci che i nostri numeri non superino il limite? E cosa succede se superiamo il limite?</p><p>Se hai un numero <code>unsigned int</code> a 255 e lo incrementi, otterrai 256 come valore finale. Come previsto. Se hai un numero <code>unsigned char</code> a 255 e lo incrementi, otterrai 0 come valore finale. Si resetta partendo dal valore iniziale possibile.</p><p>Se hai un numero <code>unsigned char</code> a 255 e aggiungi 10, otterrai il numero <code>9</code>:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  unsigned char j = 255;
  j = j + 10;
  printf("%u", j); /* 9 */
}
</code></pre><p>Se non si dispone di un valore con segno, il comportamento non è definito. Fondamentalmente ti darà un numero enorme che può variare, come in questo caso:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  char j = 127;
  j = j + 10;
  printf("%u", j); /* 4294967177 */
}
</code></pre><p>In altre parole, C non ti protegge dall'andare oltre i limiti di un tipo. Devi occupartene tu stesso.</p><h3 id="avvisi-quando-si-dichiara-il-tipo-sbagliato">Avvisi<strong> quando si dichiara il tipo sbagliato</strong></h3><p>Quando dichiari la variabile e la inizializzi con il valore sbagliato, il compilatore <code>gcc</code> (quello che probabilmente stai usando) dovrebbe avvisarti:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  char j = 1000;
}
</code></pre><pre><code>hello.c:4:11: warning: implicit conversion 
  from 'int' to
      'char' changes value from 1000 to -24
      [-Wconstant-conversion]
        char j = 1000;
             ~   ^~~~
1 warning generated.
</code></pre><p>E ti avverte anche negli assegnamenti diretti:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  char j;
  j = 1000;
}
</code></pre><p>Ma non se aumenti il ​​numero usando, ad esempio, <code>+=</code>:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  char j = 0;
  j += 1000;
}
</code></pre><h3 id="numeri-in-virgola-mobile"><strong>Numeri in virgola mobile</strong></h3><p>I tipi a virgola mobile possono rappresentare un insieme di valori molto più ampio rispetto agli interi e possono anche rappresentare frazioni, cosa che gli interi non possono fare.</p><p>Usando i numeri in virgola mobile, rappresentiamo i numeri come cifre decimali moltiplicati per potenze di 10.</p><p>Potresti vedere numeri in virgola mobile scritti come</p><ul><li><code>1.29e-3</code></li><li><code>-2.3e+5</code></li></ul><p>e in altri modi apparentemente strani.</p><p>I seguenti tipi:</p><ul><li><code>float</code></li><li><code>double</code></li><li><code>long double</code></li></ul><p>sono usati per rappresentare numeri con punti decimali (tipi a virgola mobile). Tutti possono rappresentare sia numeri positivi che negativi.</p><p>I requisiti minimi per qualsiasi implementazione C sono che <code>float</code> può rappresentare un intervallo compreso tra 10^-37 e 10^+37 e viene generalmente implementato utilizzando 32 bit. <code>double</code> può rappresentare un insieme più grande di numeri. <code>long double</code> può contenere ancora più numeri.</p><p>Le cifre esatte, come per i valori interi, dipendono dall'implementazione.</p><p>Su un moderno Mac, un <code>float</code> è rappresentato in 32 bit e ha una precisione di 24 bit significativi. 8 bit vengono utilizzati per codificare l'esponente.</p><p>Un numero <code>double</code> è rappresentato in 64 bit, con una precisione di 53 bit significativi. 11 bit vengono utilizzati per codificare l'esponente.</p><p>Il tipo <code>long double</code> è rappresentato in 80 bit, ha una precisione di 64 bit significativi. 15 bit vengono utilizzati per codificare l'esponente.</p><p>Sul tuo computer, come puoi determinare la dimensione specifica dei tipi? Puoi scrivere un programma per farlo:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  printf("char size: %lu bytes\n", sizeof(char));
  printf("int size: %lu bytes\n", sizeof(int));
  printf("short size: %lu bytes\n", sizeof(short));
  printf("long size: %lu bytes\n", sizeof(long));
  printf("float size: %lu bytes\n", sizeof(float));
  printf("double size: %lu bytes\n", 
    sizeof(double));
  printf("long double size: %lu bytes\n", 
    sizeof(long double));
}
</code></pre><p>Nel mio sistema, un moderno Mac, stampa del programma è:</p><pre><code>char size: 1 bytes
int size: 4 bytes
short size: 2 bytes
long size: 8 bytes
float size: 4 bytes
double size: 8 bytes
long double size: 16 bytes
</code></pre><h2 id="costanti"><strong>Costanti</strong></h2><p>Parliamo ora di costanti.</p><p>Una costante viene dichiarata in modo simile alle variabili, tranne per il fatto che è anteposta la parola chiave <code>const</code> e devi sempre specificare un valore.</p><p>Come questo:</p><pre><code class="language-c">const int age = 37;
</code></pre><p>Questo è C perfettamente valido, sebbene sia comune dichiarare costanti maiuscole, in questo modo:</p><pre><code class="language-c">const int AGE = 37;
</code></pre><p>È solo una convenzione, ma può aiutarti molto durante la lettura o la scrittura di un programma C poiché migliora la leggibilità. Nome maiuscolo significa costante, nome minuscolo significa variabile.</p><p>Il &nbsp;nome delle costanti segue le stesse regole per i nomi delle variabili: può contenere qualsiasi lettera maiuscola o minuscola, può contenere cifre e il trattino basso, ma non può iniziare con una cifra. <code>AGE</code> e <code>Age10</code> sono nomi di variabili validi, <code>1AGE</code> non lo è.</p><p>Un altro modo per definire le costanti è usare questa sintassi:</p><pre><code class="language-c">#define AGE 37
</code></pre><p>In questo caso, non è necessario aggiungere un tipo, non è necessario anche il segno di uguale <code>=</code> e si omette il punto e virgola alla fine.</p><p>Il compilatore C dedurrà il tipo dal valore specificato, in fase di compilazione.</p><h2 id="operatori"><strong>Operatori</strong></h2><p>C ci offre un'ampia varietà di operatori che possiamo utilizzare per operare sui dati.</p><p>In particolare, possiamo identificare diversi gruppi di operatori:</p><ul><li>operatori aritmetici</li><li>operatori di confronto</li><li>operatori logici</li><li>operatori di assegnazione composti</li><li>operatori bit per bit</li><li>operatori di puntatore</li><li>operatori di struttura</li><li>operatori vari</li></ul><p>In questa sezione li esamineremo tutti in dettaglio, usando 2 variabili immaginarie <code>a</code> e <code>b</code> come esempi.</p><p>Manterrò fuori da questo elenco gli operatori bit per bit, gli operatori di struttura e gli operatori di puntatore , per semplificare le cose</p><h3 id="operatori-aritmetici"><strong>Operatori aritmetici</strong></h3><p>In questo macro gruppo separerò gli operatori binari e gli operatori unari.</p><p>Gli operatori binari funzionano utilizzando due operandi:</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">OPERATORE</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">NOME</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">ESEMPIO</font></font></th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Assegnazione</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a = b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">+</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Addizione</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a + b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">-</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Sottrazione</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a - b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">*</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Moltiplicazione</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a * b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">/</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Divisione</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a / b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">%</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Modulo</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a % b</code></td></tr></tbody></table><!--kg-card-end: html--><p>Gli operatori unari accettano solo un operando:</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">OPERATORE</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">NOME</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">ESEMPIO</font></font></th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">+</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Più unario</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">+a</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">-</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Meno unario</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">-a</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">++</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Incremento</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a++</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">o</font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">++a</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">--</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Decremento</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a--</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">o</font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">--a</code></td></tr></tbody></table><!--kg-card-end: html--><p>La differenza tra <code>a++</code> ed <code>++a</code> è che <code>a++</code> incrementa la variabile <code>a</code> &nbsp;dopo averla usata. <code>++a</code> incrementa la variabile <code>a</code> &nbsp;prima di usarla.</p><p>Per esempio:</p><pre><code class="language-c">int a = 2;
int b;
b = a++ /* b è 2, a è 3 */
b = ++a /* b è 4, a è 4 */
</code></pre><p>Lo stesso vale per l'operatore di decremento.</p><h3 id="operatori-di-confronto"><strong>Operatori di confronto</strong></h3><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">OPERATORE</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">NOME</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">ESEMPIO</font></font></th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">==</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Operatore di uguaglianza</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a == b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">!=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Operatore non uguale</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a != b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">&gt;</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Più grande di</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &gt; b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">&lt;</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Minore di</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &lt; b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">&gt;=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Maggiore o uguale a</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &gt;= b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">&lt;=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Minore o uguale a</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a &lt;= b</code></td></tr></tbody></table><!--kg-card-end: html--><h3 id="operatori-logici"><strong>Operatori logici</strong></h3><ul><li><code>!</code> NOT (esempio: <code>!a</code>)</li><li><code>&amp;&amp;</code> AND (esempio: <code>a &amp;&amp; b</code>)</li><li><code>||</code> OR (esempio: <code>a || b</code>)</li></ul><p>Questi operatori sono ottimi quando si lavora con valori booleani.</p><h3 id="operatori-composti-di-assegnazione"><strong>Operatori composti di assegnazione </strong></h3><p>Questi operatori sono utili per eseguire un compito e allo stesso tempo eseguire un'operazione aritmetica:</p><!--kg-card-begin: html--><table style="box-sizing: inherit; margin: 0.5em 0px 2.5em; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 1.6rem; vertical-align: top; border-spacing: 0px; border-collapse: collapse; display: inline-block; overflow-x: auto; max-width: 100%; width: auto; white-space: nowrap; background: radial-gradient(at left center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 0px center / 10px 100% no-repeat scroll, radial-gradient(at right center, rgba(0, 0, 0, 0.2) 0px, rgba(0, 0, 0, 0) 75%) 100% center / 10px 100% scroll rgb(255, 255, 255); color: rgb(10, 10, 35); letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">OPERATORE</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">NOME</font></font></th><th style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 1.2rem; vertical-align: baseline; color: var(--gray85); letter-spacing: 0.2px; text-align: left; text-transform: uppercase; background-color: var(--gray10);"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">ESEMPIO</font></font></th></tr></thead><tbody style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">+=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Assegnazione somma</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a += b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">-=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Assegnazione differenza</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a -= b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">*=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Assegnazione prodotto</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a *= b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">/=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Assegnazione quoziente</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a /= b</code></td></tr><tr style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to right, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">%=</code></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline;"><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Assegnazione modulo</font></font></td><td style="box-sizing: inherit; margin: 0px; padding: 6px 12px; border: var(--gray10) 1px solid; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 16px; vertical-align: baseline; background-image: linear-gradient(to left, rgb(255, 255, 255) 50%, rgba(255, 255, 255, 0) 100%); background-position: 100% 0px; background-size: 20px 100%; background-repeat: no-repeat;"><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">a %= b</code></td></tr></tbody></table><!--kg-card-end: html--><h3 id="l-operatore-ternario"><strong>L'operatore ternario</strong></h3><p>L'operatore ternario è l'unico operatore in C che funziona con 3 operandi ed è un modo breve per esprimere i condizionali.</p><p>Ecco come appare:</p><pre><code class="language-c">&lt;condizione&gt; ? &lt;espressione&gt; : &lt;espressione&gt;</code></pre><p>Esempio:</p><pre><code class="language-c">a ? b : c
</code></pre><p>Se <code>a</code> viene valutato <code>true</code>, l'istruzione <code>b</code> viene eseguita, altrimenti viene eseguita l'istruzione <code>c</code>.</p><p>L'operatore ternario ha la stessa funzionalità di un condizionale if/else, tranne per il fatto che è più breve da esprimere e può essere integrato in un'espressione.</p><h3 id="sizeof"><strong>sizeof</strong></h3><p>L'operatore <code>sizeof</code> restituisce la dimensione dell'operando passato. Puoi passare una variabile o anche un tipo di dato.</p><p>Esempio di utilizzo:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  int age = 37;
  printf("%ld\n", sizeof(age));
  printf("%ld", sizeof(int));
}
</code></pre><h3 id="precedenza-dell-operatore"><strong>Precedenza dell'operatore</strong></h3><p>Con tutti quegli operatori (e altri, che non ho trattato in questo post, inclusi bit per bit, operatori di struttura e operatori di puntatore), dobbiamo prestare attenzione quando li utilizziamo insieme in un'unica espressione.</p><p>Supponiamo di avere questa operazione:</p><pre><code class="language-c">int a = 2;
int b = 4;
int c = b + a * a / b - a;
</code></pre><p>Qual è il valore di <code>c</code>? Ci aspettiamo che l'addizione venga eseguita prima della moltiplicazione e della divisione?</p><p>C'è una serie di regole che ci aiutano a risolvere questo enigma.</p><p>In ordine dalla precedenza più bassa alla precedenza più alta, abbiamo:</p><ul><li>l'operatore di assegnazione <code>=</code> &nbsp;</li><li>gli operatori <strong><strong>binari</strong> </strong><code>+</code> e &nbsp;<code>-</code> </li><li>gli operatori <code>*</code> e <code>/</code></li><li>gli operatori unari <code>+</code> e <code>-</code></li></ul><p>Gli operatori hanno anche una regola di associatività, che è sempre da sinistra a destra, ad eccezione degli operatori unari e dell'assegnazione.</p><p>In:</p><pre><code class="language-c">int c = b + a * a / b - a;
</code></pre><p>Per prima cosa eseguiamo <code>a * a / b</code>, che, essendo da sinistra a destra, possiamo separare in <code>a * a</code> e il risultato per <code>/ b</code>: <code>2 * 2 = 4</code>, <code>4 / 4 = 1</code>.</p><p>Quindi possiamo eseguire la somma e la sottrazione: 4 + 1 - 2. Il valore di <code>c</code> è <code>3</code>.</p><p>In ogni caso, tuttavia, voglio assicurarmi che tu sappia che puoi usare le parentesi per rendere più facile la lettura e la comprensione di qualsiasi espressione simile a quella appena vista.</p><p>Le parentesi hanno una priorità maggiore su qualsiasi altra cosa.</p><p>L'espressione precedente può essere riscritta come:</p><pre><code class="language-c">int c = b + ((a * a) / b) - a;
</code></pre><p>e non dobbiamo pensarci così tanto.</p><h2 id="condizionali"><strong>Condizionali</strong></h2><p>Qualsiasi linguaggio di programmazione offre ai programmatori la possibilità di eseguire delle scelte.</p><p>Vogliamo fare X in alcuni casi e Y in altri casi.</p><p>Vogliamo controllare i dati e fare scelte in base allo stato di tali dati.</p><p>C ci fornisce 2 modi per farlo.</p><p>La prima è l'istruzione <code>if</code>, con il suo aiutante <code>else</code>, e la seconda è l'istruzione <code>switch</code>.</p><h3 id="if"><strong>if</strong></h3><p>In un'istruzione <code>if</code>, puoi verificare che una condizione sia vera, quindi eseguire il blocco fornito tra parentesi graffe:</p><pre><code class="language-c">int a = 1;

if (a == 1) {
  /* fa qualcosa */
}
</code></pre><p>Puoi aggiungere un blocco <code>else</code> per eseguire un blocco diverso se la condizione originale risulta falsa:</p><pre><code class="language-c">int a = 1;

if (a == 2) {
  /* fa qualcosa */
} else {
  /* fa qualcos'altro */
}
</code></pre><p>Fai attenzione a una fonte comune di bug: usa sempre l'operatore di confronto <code>==</code> nelle valutazioni e non l'operatore di assegnazione <code>=</code>. In caso contrario, il controllo condizionale <code>if</code> &nbsp;sarà sempre vero, a meno che l'argomento non sia <code>0</code>, ad esempio se fai:</p><pre><code class="language-c">int a = 0;

if (a = 0) {
  /* mai invocato */
}</code></pre><p>Perché accade questo? Perché il controllo condizionale cercherà un risultato booleano (il risultato di un confronto) e il numero <code>0</code> corrisponde sempre a un valore falso. Tutto il resto è vero, compresi i numeri negativi.</p><p>Puoi avere più blocchi <code>else</code> impilando insieme più istruzioni <code>if</code>:</p><pre><code class="language-c">int a = 1;

if (a == 2) {
  /* fa qualcosa */
} else if (a == 1) {
  /*  */
} else {
  /* fa qualcos'altro ancora */
}
</code></pre><h3 id="switch"><strong>switch</strong></h3><p>Se sei costretto a ricorrere a troppi blocchi if / else / if per eseguire un controllo, forse perché hai necessità di controllare il valore esatto di una variabile, allora <code>switch</code> può esserti molto utile.</p><p>Puoi fornire una variabile come condizione e una serie di punti di ingresso <code>case</code> &nbsp;per ogni valore che ti aspetti:</p><pre><code class="language-c">int a = 1;

switch (a) {
  case 0:
    /* fa qualcosa */
    break;
  case 1:
    /* fa qualcos'altro */
    break;
  case 2:
    /* fa qualcos'altro */
    break;
}
</code></pre><p>Abbiamo bisogno di una parola chiave <code>break</code> alla fine di ogni caso per evitare che il caso successivo venga eseguito quando quello precedente finisce. Questo effetto "a cascata" può essere utile in alcune situazioni.</p><p>Puoi aggiungere un <em>case</em> "acchiappa-tutto" alla fine, etichettato con <code>default</code>:</p><pre><code class="language-c">int a = 1;

switch (a) {
  case 0:
    /* fa qualcosa */
    break;
  case 1:
    /* fa qualcos'altro */
    break;
  case 2:
    /* fa qualcos'altro */
    break;
  default:
    /* gestisce tutti gli altri casi */
    break;
}
</code></pre><h2 id="cicli"><strong>Cicli</strong></h2><p>C offre tre modi per eseguire un ciclo: <strong>ciclo <strong>for</strong></strong>, <strong>ciclo <strong>while</strong></strong> e <strong>ciclo <strong>do while</strong></strong>. Tutti consentono di iterare sugli array, ma con alcune differenze. Vediamoli nel dettaglio.</p><h3 id="cicli-for"><strong>Cicli For</strong></h3><p>Il primo e probabilmente il modo più comune per eseguire un ciclo è il <strong>ciclo for</strong> .</p><p>Usando la parola chiave <code>for</code> possiamo definire le <em><em>regole</em></em> del ciclo in anticipo, e quindi fornire il blocco che verrà eseguito ripetutamente.</p><p>Come questo:</p><pre><code class="language-c">for (int i = 0; i &lt;= 10; i++) {
  /* istruzioni da ripetere */
}
</code></pre><p>Il blocco <code>(int i = 0; i &lt;= 10; i++)</code> contiene i 3 dettagli di implementazione del ciclo:</p><ul><li>la condizione iniziale ( <code>int i = 0</code>)</li><li>il test ( <code>i &lt;= 10</code>)</li><li>l'incremento ( <code>i++</code>)</li></ul><p>Definiamo prima una variabile di ciclo, in questo caso denominata <code>i</code>. <code>i</code> è un nome di variabile comune da utilizzare per i cicli, insieme a <code>j</code> per i cicli nidificati (un ciclo all'interno di un altro ciclo). È solo una convenzione.</p><p>La variabile viene inizializzata al valore 0 e viene eseguita la prima iterazione. Quindi viene incrementato come indicata nella parte di incremento (<code>i++</code> in questo caso, incrementando di 1) e tutto il ciclo si ripete fino ad arrivare al numero 10.</p><p>All'interno del blocco principale del ciclo possiamo accedere alla variabile <code>i</code> per sapere a quale iterazione ci troviamo. Questo programma dovrebbe stampare <code>0 1 2 3 4 5 5 6 7 8 9 10</code>:</p><pre><code class="language-c">for (int i = 0; i &lt;= 10; i++) {
  /* istruzioni da ripetere */
  printf("%u ", i);
}
</code></pre><p>I cicli possono anche iniziare da un numero alto e passare a un numero inferiore, in questo modo:</p><pre><code class="language-c">for (int i = 10; i &gt; 0; i--) {
  /* istruzioni da ripetere */
}
</code></pre><p>Puoi anche incrementare la variabile del ciclo di 2 o un altro valore:</p><pre><code class="language-c">for (int i = 0; i &lt; 1000; i = i + 30) {
  /* istruzioni da ripetere */
}
</code></pre><h3 id="cicli-while">Cicli While</h3><p><strong>I<strong> </strong>cicli while</strong> sono più semplici da scrivere di un ciclo <code>for</code>, perché quest'ultimo richiede un po' più di lavoro da parte tua.</p><p>Invece di definire tutti i dati del ciclo in anticipo quando avvii il ciclo, come fai nel ciclo <code>for</code>, nel ciclo &nbsp;<code>while</code> devi semplicemente controllare una condizione:</p><pre><code class="language-c">while (i &lt; 10) {

}
</code></pre><p>Ciò presuppone che <code>i</code> sia già definito e inizializzato con un valore.</p><p>E questo ciclo sarà un <strong><strong>ciclo infinito</strong></strong> a meno che tu non incrementi la variabile <code>i</code> in un punto all'interno del ciclo. Un ciclo infinito è dannoso perché bloccherà il programma, non consentendo che accada nient'altro.</p><p>Questo è ciò di cui hai bisogno per un ciclo while "corretto":</p><pre><code class="language-c">int i = 0;

while (i &lt; 10) {
  /* fa qualcosa */

  i++;
}
</code></pre><p>C'è un'eccezione a questo, e lo vedremo tra un minuto. Prima, lascia che ti presenti <code>do while</code>.</p><h3 id="cicli-do-while"><strong>Cicli Do while </strong></h3><p>Anche se i cicli sono fantastici, potrebbero esserci momenti in cui devi fare una cosa in particolare: vuoi sempre eseguire un blocco e poi <em><em>forse</em></em> ripeterlo nuovamente.</p><p>Questo viene fatto usando la parola chiave <code>do while</code>. In un certo senso è molto simile a un ciclo <code>while</code>, ma leggermente diverso:</p><pre><code class="language-c">int i = 0;

do {
  /* fa qualcosa */

  i++;
} while (i &lt; 10);
</code></pre><p>Il blocco che contiene il commento <code>/* fa qualcosa */</code> viene sempre eseguito almeno una volta, indipendentemente dal risultato del controllo della condizione in basso.</p><p>Quindi, finché <code>i</code> non è inferiore a 10, ripeteremo il blocco.</p><h3 id="uscire-da-un-ciclo-usando-break"><strong>Uscire da un ciclo usando break</strong></h3><p>In C, per tutti i cicli, abbiamo un modo per uscire da un loop in qualsiasi momento, immediatamente, indipendentemente dalle condizioni impostate per il ciclo.</p><p>Ciò viene fatto usando la parola chiave <code>break</code>.</p><p>Questo è utile in molti casi. Potresti voler controllare il valore di una variabile, ad esempio:</p><pre><code class="language-c">for (int i = 0; i &lt;= 10; i++) {
  if (i == 4 &amp;&amp; unaVariabile == 10) {
    break;
  }
}
</code></pre><p>Avere questa opzione per uscire da un ciclo è particolarmente interessante per i cicli <code>while</code> &nbsp;(e anche <code>do while</code>), perché possiamo creare loop apparentemente infiniti che terminano quando si verifica una condizione. Lo definisci all'interno del blocco del ciclo:</p><pre><code class="language-c">int i = 0;
while (1) {
  /* fa qualcosa */

  i++;
  if (i == 10) break;
}
</code></pre><p>È piuttosto comune avere questo tipo di ciclo in C.</p><h2 id="array"><strong>Array</strong></h2><p>Un array è una variabile che memorizza più valori.</p><p>Ogni valore nell'array, in C, deve avere lo <strong><strong>stesso tipo</strong></strong> . Ciò significa che avrai array di valori <code>int</code>, array di valori <code>double</code> e così via.</p><p>Puoi definire un array di valori <code>int</code> in questo modo:</p><pre><code class="language-c">int prices[5];
</code></pre><p>Devi sempre specificare la dimensione dell'array. C non fornisce array dinamici pronti all'uso (per ottenere questo devi usare una struttura di dati come un elenco collegato).</p><p>Puoi usare una costante per definire la dimensione:</p><pre><code class="language-c">const int SIZE = 5;
int prices[SIZE];
</code></pre><p>Puoi inizializzare un array al momento della definizione, in questo modo:</p><pre><code class="language-c">int prices[5] = { 1, 2, 3, 4, 5 };
</code></pre><p>Ma puoi anche assegnare un valore dopo la definizione, in questo modo:</p><pre><code class="language-c">int prices[5];

prices[0] = 1;
prices[1] = 2;
prices[2] = 3;
prices[3] = 4;
prices[4] = 5;
</code></pre><p>Oppure, più pratico, usando un ciclo:</p><pre><code class="language-c">int prices[5];

for (int i = 0; i &lt; 5; i++) {
  prices[i] = i + 1;
}
</code></pre><p>E puoi fare riferimento a un elemento nell'array utilizzando le parentesi quadre dopo il nome della variabile dell'array, aggiungendo un numero intero per determinare il valore dell'indice. Come questo:</p><pre><code class="language-c">prices[0]; /* valore dell'elemento dell'array: 1 */
prices[1]; /* valore dell'elemento dell'array: 2 */
</code></pre><p>Gli indici degli array iniziano da 0, quindi un array con 5 elementi, come l'array <code>prices</code> di sopra, avrà elementi che vanno da <code>prices[0]</code> a <code>prices[4]</code>.</p><p>La cosa interessante degli array in C è che tutti i suoi elementi &nbsp;sono memorizzati in sequenza, uno dopo l'altro. Qualcosa che normalmente non accade con i linguaggi di programmazione di livello superiore.</p><p>Un'altra cosa interessante è questa: il nome della variabile dell'array, nell'esempio sopra <code>prices</code>, è un <strong><strong>puntatore</strong></strong> al primo elemento dell'array. In quanto tale può essere utilizzato come un normale puntatore.</p><p>I puntatori li tratteremo a breve.</p><h2 id="stringhe"><strong>Stringhe</strong></h2><p>In C, le stringhe sono un tipo speciale di array: una stringa è un array di valori <code>char</code>:</p><pre><code class="language-c">char name[7];
</code></pre><p>Ho introdotto il tipo <code>char</code> quando ho introdotto i tipi, ma in breve, è comunemente usato per memorizzare le lettere della tabella ASCII.</p><p>Una stringa può essere inizializzata come si inizializza un normale array:</p><pre><code class="language-c">char name[7] = { "F", "l", "a", "v", "i", "o" };
</code></pre><p>O più convenientemente con una stringa letterale (detta anche stringa costante), una sequenza di caratteri racchiusa tra virgolette:</p><pre><code class="language-c">char name[7] = "Flavio";
</code></pre><p>Puoi stampare una stringa con <code>printf()</code> usando <code>%s</code>:</p><pre><code class="language-c">printf("%s", name);
</code></pre><p>Hai notato come "Flavio" sia lungo 6 caratteri, ma ho definito un array di lunghezza 7? Come mai? Questo perché l'ultimo carattere in una stringa deve essere un valore <code>0</code>, il terminatore di stringa, e dobbiamo prevedere uno spazio per esso.</p><p>Questo è importante da tenere a mente soprattutto quando si manipolano le stringhe.</p><p>Parlando di manipolazione delle stringhe, c'è un'importante libreria standard fornita in C: <code>string.h</code>.</p><p>Questa libreria è essenziale perché astrae molti dei dettagli di basso livello del lavoro con le stringhe e ci fornisce una serie di utili funzioni.</p><p>Puoi caricare la libreria nel tuo programma aggiungendo in alto:</p><pre><code class="language-c">#include &lt;string.h&gt;
</code></pre><p>E una volta fatto, hai accesso a:</p><ul><li><code>strcpy()</code> per copiare una stringa su un'altra stringa</li><li><code>strcat()</code> per aggiungere una stringa a un'altra stringa</li><li><code>strcmp()</code> per confrontare due stringhe per l'uguaglianza</li><li><code>strncmp()</code> per confrontare i primi <code>n</code> caratteri di due stringhe</li><li><code>strlen()</code> per calcolare la lunghezza di una stringa</li></ul><p>e molti, molti altri.</p><h2 id="puntatori"><strong>Puntatori</strong></h2><p>I puntatori sono una delle parti più confuse/difficili di C, secondo me. Soprattutto se sei nuovo alla programmazione, ma anche se provieni da un linguaggio di programmazione di livello superiore come Python o JavaScript.</p><p>In questa sezione voglio introdurli nel modo più semplice possibile ma non stupido.</p><p>Un puntatore è l'indirizzo di un blocco di memoria che contiene una variabile.</p><p>Quando dichiari un numero intero come questo:</p><pre><code class="language-c">int age = 37;
</code></pre><p>Possiamo usare l'operatore <code>&amp;</code> per ottenere il valore dell'indirizzo di memoria della variabile:</p><pre><code class="language-c">printf("%p", &amp;age); /* 0x7ffeef7dcb9c */
</code></pre><p>Ho usato il formato <code>%p</code> specificato in &nbsp;<code>printf()</code> per stampare il valore dell'indirizzo.</p><p>Possiamo assegnare l'indirizzo a una variabile:</p><pre><code class="language-c">int *address = &amp;age;
</code></pre><p>Usando <code>int *address</code> nella dichiarazione, non stiamo dichiarando una variabile intera, ma piuttosto un <strong><strong>puntatore a un intero</strong></strong> .</p><p>Possiamo usare l'operatore puntatore <code>*</code> per ottenere il valore della variabile a cui punta un indirizzo:</p><pre><code class="language-c">int age = 37;
int *address = &amp;age;
printf("%u", *address); /* 37 */
</code></pre><p>Questa volta stiamo usando di nuovo l'operatore puntatore, ma poiché non essendo una dichiarazione, qui sta a significare "il valore della variabile a cui punta questo puntatore".</p><p>In questo esempio dichiariamo una variabile <code>age</code> e utilizziamo un puntatore per inizializzare il valore:</p><pre><code class="language-c">int age;
int *address = &amp;age;
*address = 37;
printf("%u", *address);
</code></pre><p>Quando lavori con C, scoprirai che molte cose sono basate su questo semplice concetto. Quindi assicurati di familiarizzare un po' con lui esercitandoti da solo con gli esempi sopra.</p><p>I puntatori sono una grande opportunità perché ci costringono a pensare agli indirizzi di memoria e a come sono organizzati i dati.</p><p>Gli array sono un esempio. Quando dichiari un array:</p><pre><code class="language-c">int prices[3] = { 5, 4, 3 };
</code></pre><p>La variabile <code>prices</code> è in realtà un puntatore al primo elemento dell'array. In questo caso puoi ottenere il valore del primo elemento usando la funzione <code>printf()</code>:</p><pre><code class="language-c">printf("%u", *prices); /* 5 */
</code></pre><p>La cosa interessante è che possiamo ottenere il secondo elemento aggiungendo 1 al puntatore &nbsp;<code>prices</code>:</p><pre><code class="language-c">printf("%u", *(prices + 1)); /* 4 */
</code></pre><p>E così via per tutti gli altri valori.</p><p>Possiamo anche fare molte belle operazioni di manipolazione delle stringhe, poiché le stringhe sono fondamentalmente degli array.</p><p>Abbiamo anche molti altri esempi di applicazioni, incluso passare il riferimento di un oggetto o di una funzione in giro per evitare di consumare più risorse nel copiarli.</p><h2 id="funzioni"><strong>Funzioni</strong></h2><p>Le funzioni sono il modo in cui possiamo strutturare il nostro codice in subroutine potendo:</p><ol><li>dargli un nome</li><li>chiamare quando ne abbiamo bisogno</li></ol><p>Già nel tuo primissimo programma, in "Hello, World!", fai subito uso delle funzioni C:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
    printf("Hello, World!");
}
</code></pre><p>La funzione <code>main()</code> è una funzione molto importante, in quanto è il punto di ingresso per un programma C.</p><p>Ecco un'altra funzione:</p><pre><code class="language-c">void doSomething(int value) {
    printf("%u", value);
}
</code></pre><p>Le funzioni hanno 4 aspetti importanti:</p><ol><li>hanno un nome, quindi possiamo invocarli ("chiamare") in seguito</li><li>specificano un valore da restituire</li><li>possono avere argomenti</li><li>hanno un corpo, compreso tra parentesi graffe</li></ol><p>Il corpo della funzione è l'insieme di istruzioni che vengono eseguite ogni volta che invochiamo una funzione.</p><p>Se la funzione non ha un valore da restituire, è possibile utilizzare la parola chiave <code>void</code> prima del nome della funzione. Altrimenti si specifica il tipo di valore restituito dalla funzione (<code>int</code> per un numero intero, <code>float</code> per un valore in virgola mobile, <code>const char *</code> per una stringa, ecc.).</p><p>Non puoi restituire più di un valore da una funzione.</p><p>Una funzione può avere argomenti. Sono facoltativi. Se non li ha, tra parentesi inseriamo <code>void</code>, in questo modo:</p><pre><code class="language-c">void doSomething(void) {
   /* ... */
}
</code></pre><p>In questo caso, quando invochiamo la funzione la chiameremo senza nulla tra parentesi:</p><pre><code class="language-c">doSomething();
</code></pre><p>Se abbiamo un parametro, specifichiamo il tipo e il nome del parametro, in questo modo:</p><pre><code class="language-c">void doSomething(int value) {
   /* ... */
}
</code></pre><p>Quando invochiamo la funzione, passeremo quel parametro tra parentesi, in questo modo:</p><pre><code class="language-c">doSomething(3);
</code></pre><p>Possiamo avere più parametri, e in tal caso li separiamo usando una virgola, sia nella dichiarazione che nell'invocazione:</p><pre><code class="language-c">void doSomething(int value1, int value2) {
   /* ... */
}

doSomething(3, 4);
</code></pre><p>I parametri vengono passati per <strong><strong>copia</strong></strong> . Ciò significa che se modifichi <code>value1</code>, il suo valore viene modificato localmente. Il valore al di fuori della funzione, dove è stato passato nella chiamata, non cambia.</p><p>Se passi un <strong><strong>puntatore</strong></strong> come parametro, puoi modificare quel valore di variabile perché ora puoi accedervi direttamente usando il suo indirizzo di memoria.</p><p>Non è possibile definire un valore predefinito per un parametro. C++ può farlo (e così possono fare i programmi in linguaggio per Arduino), ma C non può.</p><p>Assicurati di definire la funzione prima di chiamarla, altrimenti il ​​compilatore genererà un avviso e un errore:</p><pre><code>➜  ~ gcc hello.c -o hello; ./hello
hello.c:13:3: warning: implicit declaration of
      function 'doSomething' is invalid in C99
      [-Wimplicit-function-declaration]
  doSomething(3, 4);
  ^
hello.c:17:6: error: conflicting types for
      'doSomething'
void doSomething(int value1, char value2) {
     ^
hello.c:13:3: note: previous implicit declaration
      is here
  doSomething(3, 4);
  ^
1 warning and 1 error generated.
</code></pre><p>L'avviso che ricevi riguarda l'ordine propedeutico della scrittura del codice, di cui ho già parlato.</p><p>Invece l'errore riguarda un'altra cosa, comunque correlata all'avviso. Poiché C non "vede" la dichiarazione della funzione prima dell'invocazione, deve fare delle ipotesi. E assume che la funzione restituisca <code>int</code>. La funzione tuttavia restituisce <code>void</code>, da cui l'errore.</p><p>Se modifichi la definizione della funzione in:</p><pre><code class="language-c">int doSomething(int value1, int value2) {
  printf("%d %d\n", value1, value2);
  return 1;
}
</code></pre><p>otterresti solo l'avviso e non l'errore:</p><pre><code>➜  ~ gcc hello.c -o hello; ./hello
hello.c:14:3: warning: implicit declaration of
      function 'doSomething' is invalid in C99
      [-Wimplicit-function-declaration]
  doSomething(3, 4);
  ^
1 warning generated.
</code></pre><p>In ogni caso, assicurati di dichiarare la funzione prima di utilizzarla. Sposta la funzione in alto o aggiungi il prototipo della funzione in un file di intestazione.</p><p>All'interno di una funzione, puoi dichiarare variabili.</p><pre><code class="language-c">void doSomething(int value) {
  int doubleValue = value * 2;
}
</code></pre><p>Una variabile viene creata nel punto di chiamata della funzione e viene distrutta al termine della funzione. Non è visibile dall'esterno.</p><p>All'interno di una funzione, puoi chiamare la funzione stessa. Questo si chiama <strong><strong>ricorsione</strong></strong> ed è qualcosa che offre opportunità peculiari.</p><h2 id="input-e-output"><strong>Input e output</strong></h2><p>C è un piccolo linguaggio e il suo "nucleo" non include alcuna funzionalità di input/output (I/O).</p><p>Questo non è qualcosa di esclusivo di C, ovviamente. È comune che il core del linguaggio sia agnostico rispetto all'I/O.</p><p>Nel caso di C, Input/Output viene fornito dalla C Standard Library tramite un insieme di funzioni definite nel file di intestazione <code>stdio.h</code>.</p><p>Puoi importare questa libreria usando:</p><pre><code class="language-c">#include &lt;stdio.h&gt;
</code></pre><p>sopra il tuo file C.</p><p>Questa libreria ci fornisce, tra molte altre funzioni:</p><ul><li><code>printf()</code></li><li><code>scanf()</code></li><li><code>sscanf()</code></li><li><code>fgets()</code></li><li><code>fprintf()</code></li></ul><p>Prima di descrivere cosa fanno queste funzioni, voglio dedicare un minuto a parlare dei <strong><strong>flussi di I/O</strong></strong> .</p><p>Abbiamo 3 tipi di flussi I/O in C:</p><ul><li><code>stdin</code>(ingresso standard)</li><li><code>stdout</code>(uscita standard)</li><li><code>stderr</code>(errore standard)</li></ul><p>Con le funzioni I/O lavoriamo sempre con i flussi. Uno stream è un'interfaccia di alto livello che può rappresentare un dispositivo o un file. Dal punto di vista del C, non abbiamo alcuna differenza nella lettura da un file o nella lettura da riga di comando: è comunque un flusso di I/O.</p><p>Questa è una cosa da tenere a mente.</p><p>Alcune funzioni sono progettate per funzionare con uno stream specifico, come <code>printf()</code>, che usiamo per stampare i caratteri su <code>stdout</code>. Usando la sua controparte più generica <code>fprintf()</code>, possiamo specificare su quale flusso scrivere.</p><p>Ora parliamo di <code>printf()</code>, anche se lo abbiamo incontrato più volte da quando abbiamo iniziato.</p><p><code>printf()</code> è una delle prime funzioni che utilizzerai durante l'apprendimento della programmazione in C.</p><p>Nella sua forma di utilizzo più semplice, gli passi una stringa letterale:</p><pre><code class="language-c">printf("hey!");
</code></pre><p>e il programma stamperà il contenuto della stringa sullo schermo.</p><p>È possibile stampare il valore di una variabile. Ma è un po' più complicato perché devi aggiungere un carattere speciale, un segnaposto, che cambia a seconda del tipo di variabile. Ad esempio usiamo <code>%d</code> per un numero intero in base 10 con segno:</p><pre><code class="language-c">int age = 37;

printf("La mia età è %d", age);
</code></pre><p>Possiamo stampare più di una variabile usando le virgole:</p><pre><code class="language-c">int age_yesterday = 37;
int age_today = 36;

printf("Ieri la mia età era %d e oggi è %d", age_yesterday, age_today);
</code></pre><p>Esistono altri identificatori di formato come <code>%d</code>:</p><ul><li><code>%c</code> per un carattere</li><li><code>%s</code> per un carattere</li><li><code>%f</code> per i numeri in virgola mobile</li><li><code>%p</code> per i puntatori</li></ul><p>e molti altri.</p><p>Possiamo utilizzare i caratteri di escape in <code>printf()</code>, come &nbsp;<code>\n</code> che possiamo usare per fare in modo che l'output crei una nuova riga.</p><h3 id="scanf-"><strong><code>scanf()</code></strong></h3><p><code>printf()</code> viene utilizzato come funzione di output. Voglio introdurre ora una funzione di input, così da completare il concetto di I/O: <code>scanf()</code>.</p><p>Questa funzione viene utilizzata per ottenere un valore dall'utente che esegue il programma, dalla riga di comando.</p><p>Dobbiamo prima definire una variabile che conterrà il valore che otteniamo dall'input:</p><pre><code class="language-c">int age;
</code></pre><p>Quindi chiamiamo <code>scanf()</code> con 2 argomenti: il formato (tipo) della variabile e l'indirizzo della variabile:</p><pre><code class="language-c">scanf("%d", &amp;age);
</code></pre><p>Se vogliamo ottenere una stringa come input, ricorda che il nome della stringa è un puntatore al primo carattere, quindi non è necessario il carattere <code>&amp;</code> prima di esso:</p><pre><code class="language-c">char name[20];
scanf("%s", name);
</code></pre><p>Ecco un piccolo programma che usa sia &nbsp;<code>printf()</code> che <code>scanf()</code>:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  char name[20];
  printf("Inseriscie il tuo nome: ");
  scanf("%s", name);
  printf("hai inserito %s", name);
}
</code></pre><h2 id="ambito-delle-variabili"><strong>Ambito delle variabili</strong></h2><p>Quando definisci una variabile in un programma C, a seconda di dove la dichiari, avrà un <strong>ambito</strong> diverso.</p><p>Ciò significa che sarà disponibile in alcuni luoghi, ma non in altri.</p><p>Il luogo in cui avviene la dichiarazione determina 2 tipi di variabili:</p><ul><li><strong><strong>variabili globali</strong></strong></li><li><strong><strong>variabili locali</strong></strong></li></ul><p>Questa è la differenza: una variabile dichiarata all'interno di una funzione è una variabile locale, come questa:</p><pre><code class="language-c">int main(void) {
  int age = 37;
}
</code></pre><p>Le variabili locali sono accessibili solo dall'interno della funzione e quando la funzione termina, termina anche la loro esistenza. Vengono cancellate dalla memoria (con alcune eccezioni).</p><p>Una variabile definita al di fuori di una funzione è una variabile globale, come in questo esempio:</p><pre><code class="language-c">int age = 37;

int main(void) {
  /* ... */
}
</code></pre><p>Le variabili globali sono accessibili da qualsiasi funzione del programma, e sono disponibili per l'intera esecuzione del programma, fino al suo termine.</p><p>Ho detto che le variabili locali non sono più disponibili al termine della funzione.</p><p>Il motivo è che le variabili locali sono dichiarate nello <strong><strong>stack</strong></strong> , per impostazione predefinita, a meno che non le allochi esplicitamente nell'heap usando i puntatori. Ma poi devi gestire tu stesso la memoria.</p><h2 id="variabili-statiche"><strong>Variabili statiche</strong></h2><p>All'interno di una funzione, puoi inizializzare una <strong><strong>variabile statica</strong></strong> usando la parole chiave <code>static</code>.</p><p>Ho detto "all'interno di una funzione" perché le variabili globali sono statiche per impostazione predefinita, quindi non è necessario aggiungere la parola chiave.</p><p>Cos'è una variabile statica? Una variabile statica viene inizializzata su 0 se non viene specificato alcun valore iniziale e mantiene il valore tra le chiamate di funzione.</p><p>Considera questa funzione:</p><pre><code class="language-c">int incrementAge() {
  int age = 0;
  age++;
  return age;
}
</code></pre><p>Se chiamiamo <code>incrementAge()</code> una volta, otterremo <code>1</code> come valore restituito. Se lo chiamiamo più di una volta, otterremo sempre 1 come valore di ritorno, perché <code>age</code> è una variabile locale e viene reinizializzata a <code>0</code> ad ogni singola chiamata di funzione.</p><p>Se cambiamo la funzione in:</p><pre><code class="language-c">int incrementAge() {
  static int age = 0;
  age++;
  return age;
}
</code></pre><p>Ora ogni volta che chiamiamo questa funzione, otterremo un valore incrementato:</p><pre><code class="language-c">printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
</code></pre><p>ci darà</p><pre><code>1
2
3
</code></pre><p>Possiamo anche omettere l'inizializzazione di <code>age</code> a 0 in <code>static int age = 0;</code> e scrivere semplicemente <code>static int age;</code> perché le variabili statiche vengono automaticamente impostate su 0 quando vengono create.</p><p>Possiamo anche avere array statici. In questo caso, ogni singolo elemento dell'array viene inizializzato a 0:</p><pre><code class="language-c">int incrementAge() {
  static int ages[3];
  ages[0]++;
  return ages[0];
}
</code></pre><h2 id="variabili-globali"><strong>Variabili globali</strong></h2><p>In questa sezione voglio approfondire la differenza tra <strong><strong>variabili globali e locali</strong></strong> .</p><p>Una <strong><strong>variabile locale</strong></strong> è definita all'interno di una funzione ed è disponibile solo all'interno di tale funzione.</p><p>Come questo:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main(void) {
  char j = 0;
  j += 10;
  printf("%u", j); //10
}
</code></pre><p><code>j</code> non è disponibile da nessuna parte al di fuori della funzione <code>main</code>.</p><p>Una <strong><strong>variabile globale</strong></strong> è definita al di fuori di qualsiasi funzione, in questo modo:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

char i = 0;

int main(void) {
  i += 10;
  printf("%u", i); //10
}
</code></pre><p>È possibile accedere a una variabile globale da qualsiasi funzione del programma. L'accesso non si limita alla lettura del valore: la variabile può essere aggiornata da qualsiasi funzione.</p><p>Per questo motivo, le variabili globali sono un modo che abbiamo per condividere gli stessi dati tra le funzioni.</p><p>La principale differenza con le variabili locali è che la memoria allocata per le variabili viene liberata una volta terminata la funzione.</p><p>Le variabili globali vengono liberate solo al termine del programma.</p><h2 id="definizioni-di-tipo"><strong>Definizioni di tipo</strong></h2><p>La parola chiave <code>typedef</code> in C consente di definire nuovi tipi.</p><p>Partendo dai tipi integrati in C, possiamo creare i nostri tipi, usando questa sintassi:</p><pre><code class="language-c">typedef existingtype NEWTYPE
</code></pre><p>Il nuovo tipo che creiamo di solito è, per convenzione, maiuscolo.</p><p>Questo per distinguerlo più facilmente, e riconoscerlo immediatamente come tipo.</p><p>Ad esempio possiamo definire un nuovo tipo <code>NUMBER</code> che è un <code>int</code>:</p><pre><code class="language-c">typedef int NUMBER
</code></pre><p>e una volta fatto, puoi definire nuove variabili <code>NUMBER</code>:</p><pre><code class="language-c">NUMBER one = 1;
</code></pre><p>Ora potresti chiederti: perché? Perché non utilizzare semplicemente il tipo integrato <code>int</code>?</p><p>Bene, <code>typedef</code> diventa davvero utile se abbinato a due cose: tipi enumerati e strutture .</p><h2 id="tipi-enumerati"><strong>Tipi enumerati</strong></h2><p>Usando le parole chiave <code>typedef</code> e <code>enum</code> possiamo definire un tipo che può avere un valore o un altro.</p><p>È uno degli usi più importanti della parola chiave <code>typedef</code>.</p><p>Questa è la sintassi di un tipo enumerato:</p><pre><code class="language-c">typedef enum {
  //... valore
} TYPENAME;
</code></pre><p>Il tipo enumerato che creiamo è solitamente, per convenzione, maiuscolo.</p><p>Qui c'è un semplice esempio:</p><pre><code class="language-c">typedef enum {
  true,
  false
} BOOLEAN;
</code></pre><p>C viene fornito con un tipo <code>bool</code>, quindi questo esempio non è molto pratico, ma serve a farti un'idea.</p><p>Un altro esempio è definire i giorni feriali:</p><pre><code class="language-c">typedef enum {
  lunedi,  
  martedi,
  mercoledi,
  giovedi,
  venerdi,
  sabato,
  domenica
} WEEKDAY;
</code></pre><p>Ecco un semplice programma che utilizza questo tipo enumerato:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

typedef enum {
  lunedi,  
  martedi,
  mercoledi,
  giovedi,
  venerdi,
  sabato,
  domenica
} WEEKDAY;

int main(void) {
  WEEKDAY day = lunedi;

  if (day == lunedi) {
    printf("È lunedì!"); 
  } else {
    printf("Non è lunedì"); 
  }
}</code></pre><p>Ogni elemento nella definizione enum è accoppiato internamente a un numero intero. Quindi in questo esempio <code>lunedi</code> è 0, <code>martedi</code> è 1 e così via.</p><p>Ciò significa che l'istruzione condizionale sarebbe potuta essere <code>if (day == 0)</code> invece di <code>if (day == lunedi)</code>, ma è molto più semplice per noi umani ragionare con i nomi piuttosto che con i numeri, quindi è una sintassi molto conveniente.</p><h2 id="strutture"><strong>Strutture</strong></h2><p>Usando la parola chiave <code>struct</code> possiamo creare strutture di dati complesse usando i tipi C di base.</p><p>Una struttura è una raccolta di valori di diversi tipi. Gli array in C sono limitati a un tipo, quindi le strutture possono rivelarsi molto interessanti in molti casi d'uso.</p><p>Questa è la sintassi di una struttura:</p><pre><code class="language-c">struct &lt;nomestruttura&gt; {
  //...variabili
};
</code></pre><p>Esempio:</p><pre><code class="language-c">struct persona {
  int eta;
  char *nome;
};
</code></pre><p>Puoi dichiarare variabili che hanno come tipo quella struttura aggiungendole dopo la parentesi graffa di chiusura, prima del punto e virgola, in questo modo:</p><pre><code class="language-c">struct persona {
  int eta;
  char *nome;
} flavio;
</code></pre><p>O più variabili, come in questo caso:</p><pre><code class="language-c">struct persona {
  int eta;
  char *nome;
} flavio, popolazione[20];
</code></pre><p>In questo caso dichiaro una singola variabile <code>persona</code> denominata <code>flavio</code> e un array di 20 <code>persona</code> denominata <code>popolazione</code>.</p><p>Possiamo anche dichiarare le variabili in un secondo momento, usando questa sintassi:</p><pre><code class="language-c">struct persona {
  int eta;
  char *nome;
};

struct persona flavio;
</code></pre><p>Possiamo inizializzare una struttura al momento della dichiarazione:</p><pre><code class="language-c">struct persona {
  int eta;
  char *nome;
};

struct persona flavio = { 37, "Flavio" };
</code></pre><p>e una volta definita una struttura, possiamo accedere ai valori in essa contenuti usando un punto:</p><pre><code class="language-c">struct persona {
  int eta;
  char *nome;
};

struct person flavio = { 37, "Flavio" };
printf("%s, eta %u", flavio.nome, flavio.eta);
</code></pre><p>Possiamo anche cambiare i valori usando la sintassi col punto:</p><pre><code class="language-c">struct persona {
  int eta;
  char *nome;
};

struct persona flavio = { 37, "Flavio" };

flavio.eta = 38;
</code></pre><p>Le strutture sono molto utili perché possiamo passarle come parametri di funzione, o restituire valori, incorporando varie variabili al loro interno. Ogni variabile ha un'etichetta.</p><p>È importante notare che le strutture vengono <strong><strong>passate tramite </strong>copia</strong>, a meno che ovviamente non si passi un puntatore a una struttura, nel qual caso viene passato per riferimento.</p><p>Utilizzando <code>typedef</code> possiamo semplificare il codice quando si lavora con le strutture.</p><p>Diamo un'occhiata a un esempio:</p><pre><code class="language-c">typedef struct {
  int eta;
  char *nome;
} PERSONA;
</code></pre><p>La struttura che creiamo utilizzando <code>typedef</code> è solitamente, per convenzione, maiuscola.</p><p>Ora possiamo dichiarare nuove variabili <code>PERSONA</code> come questa:</p><pre><code class="language-c">PERSONA flavio;
</code></pre><p>e possiamo inizializzarle nella dichiarazione in questo modo:</p><pre><code class="language-c">PERSONA flavio = { 37, "Flavio" };
</code></pre><h2 id="parametri-della-riga-di-comando"><strong>Parametri della riga di comando</strong></h2><p>Nei tuoi programmi C, potresti aver la necessità di dover accettare i parametri dalla riga di comando al lancio del comando stesso.</p><p>Per casi semplici, tutto ciò che devi fare per ottenere ciò è cambiare l'aspetto della funzione <code>main()</code> da</p><pre><code class="language-c">int main(void)
</code></pre><p>a</p><pre><code class="language-c">int main (int argc, char *argv[])
</code></pre><p><code>argc</code> è un numero intero che contiene il numero di parametri forniti nella riga di comando.</p><p><code>argv</code> è un array di stringhe.</p><p>All'avvio del programma, ci vengono forniti gli argomenti in quei 2 parametri.</p><p>Nota che c'è sempre almeno un elemento nell'array <code>argv</code>: il nome del programma</p><p>Prendiamo l'esempio del compilatore C che utilizziamo per eseguire i nostri programmi, in questo modo:</p><pre><code class="language-sh">gcc hello.c -o hello
</code></pre><p>Se questo fosse il nostro programma, <code>argc</code> avrà il valore 4 e &nbsp;<code>argv</code> sarà un array contenente</p><ul><li><code>gcc</code></li><li><code>hello.c</code></li><li><code>-o</code></li><li><code>hello</code></li></ul><p>Scriviamo un programma che stampi gli argomenti che riceve:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main (int argc, char *argv[]) {
  for (int i = 0; i &lt; argc; i++) {
    printf("%s\n", argv[i]);
  }
}
</code></pre><p>Se il nome del nostro programma è <code>hello</code> e lo eseguiamo in questo modo: <code>./hello</code>, otterremmo questo come output:</p><pre><code>./hello
</code></pre><p>Se passiamo alcuni parametri casuali, come questo: <code>./hello a b c</code> otterremmo questo output sul terminale:</p><pre><code>./hello
a
b
c
</code></pre><p>Questo sistema funziona alla grande per esigenze semplici. Per esigenze più complesse, ci sono pacchetti comunemente usati come <strong><strong>getopt</strong></strong> .</p><h2 id="file-di-intestazione"><strong>File di intestazione</strong></h2><p>Programmi semplici possono essere inseriti in un unico file. Ma quando il tuo programma diventa più grande è impossibile tenerlo tutto in un solo file.</p><p>È possibile spostare parti di un programma in un file separato. Quindi crei un <strong><strong>file di intestazione</strong></strong> .</p><p>Un file di intestazione sembra un normale file C, tranne per il fatto che termina con <code>.h</code> invece di <code>.c</code>. Invece delle implementazioni delle tue funzioni e delle altre parti di un programma, contiene le <strong><strong>dichiarazioni</strong></strong> .</p><p>Hai già utilizzato i file di intestazione quando hai usato per la prima volta la funzione <code>printf()</code> o un'altra funzione di I/O, e per fare ciò hai dovuto digitare:</p><pre><code class="language-c">#include &lt;stdio.h&gt;
</code></pre><p>per usarlo.</p><p><code>#include</code> è una direttiva del preprocessore.</p><p>Il preprocessore va a cercare il file <code>stdio.h</code> nella libreria standard perché hai usato le parentesi attorno ad esso. Per includere i tuoi file di intestazione, utilizzerai le virgolette, in questo modo:</p><pre><code class="language-c">#include "myfile.h"
</code></pre><p>Quanto sopra cercherà <code>myfile.h</code> nella cartella corrente.</p><p>Puoi anche utilizzare una struttura di cartelle per le librerie:</p><pre><code class="language-c">#include "myfolder/myfile.h"
</code></pre><p>Diamo un'occhiata a un esempio. Questo programma calcola gli anni da un determinato anno:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int calculateAge(int year) {
  const int CURRENT_YEAR = 2020;
  return CURRENT_YEAR - year;
}

int main(void) {
  printf("%u", calculateAge(1983));
}
</code></pre><p>Supponiamo di voler spostare la funzione <code>calculateAge</code> in un file separato.</p><p>creo un file <code>calculate_age.c</code>:</p><pre><code class="language-c">int calculateAge(int year) {
  const int CURRENT_YEAR = 2020;
  return CURRENT_YEAR - year;
}
</code></pre><p>E un file <code>calculate_age.h</code> in cui inserisco la <em><em>funzione prototipo</em></em> , che è la stessa della funzione nel file <code>.c</code> , tranne il corpo:</p><pre><code class="language-c">int calculateAge(int year);
</code></pre><p>Ora nel file <code>.c</code> principale possiamo andare a rimuovere la definizione della funzione <code>calculateAge()</code> e possiamo importare <code>calculate_age.h</code>, che renderà disponibile la funzione <code>calculateAge()</code> :</p><pre><code class="language-c">#include &lt;stdio.h&gt;
#include "calculate_age.h"

int main(void) {
  printf("%u", calculateAge(1983));
}
</code></pre><p>Non dimenticare che per compilare un programma composto da più file, devi elencarli tutti nella riga di comando, in questo modo:</p><pre><code class="language-sh">gcc -o main main.c calculate_age.c
</code></pre><p>E con configurazioni più complesse, è necessario un Makefile per dire al compilatore come compilare il programma.</p><h2 id="il-preprocessore"><strong>Il preprocessore</strong></h2><p>Il preprocessore è uno strumento che ci aiuta molto durante la programmazione in C. Fa parte dello standard C, proprio come il linguaggio, il compilatore e la libreria standard.</p><p>Analizza il nostro programma e si assicura che il compilatore ottenga tutto ciò di cui ha bisogno prima di procedere con il processo.</p><p>Cosa fa in pratica?</p><p>Ad esempio, cerca tutti i file di intestazione che includi con la direttiva <code>#include</code>.</p><p>Esamina anche ogni costante che hai definito utilizzando <code>#define</code> e la sostituisce con il suo valore effettivo.</p><p>Questo è solo l'inizio. Ho citato queste 2 operazioni perché sono le più comuni. Il preprocessore può fare molto di più.</p><p>Hai notato che <code>#include</code> e <code>#define</code> hanno un <code>#</code> all'inizio? Questo è comune a tutte le direttive del preprocessore. Se una riga inizia con <code>#</code>, viene curata dal preprocessore.</p><h3 id="condizionali-1"><strong>Condizionali</strong></h3><p>Una delle cose che possiamo fare è usare i condizionali per cambiare il modo in cui il nostro programma verrà compilato, a seconda del valore di un'espressione.</p><p>Ad esempio possiamo verificare se la costante <code>DEBUG</code> è 0:</p><pre><code class="language-c">#include &lt;stdio.h&gt;

const int DEBUG = 0;

int main(void) {
#if DEBUG == 0
  printf("NON sto eseguendo il debug\n");
#else
  printf("Sto eseguendo il debug\n");
#endif
}
</code></pre><h3 id="costanti-simboliche"><strong>Costanti simboliche</strong></h3><p>Possiamo definire una <strong><strong>costante simbolica</strong></strong> :</p><pre><code class="language-c">#define VALUE 1
#define PI 3.14
#define NAME "Flavio"
</code></pre><p>Quando utilizziamo NAME o PI o VALUE nel nostro programma, il preprocessore sostituisce il suo nome con il valore prima di eseguire il programma.</p><p>Le costanti simboliche sono molto utili perché possiamo dare nomi ai valori senza creare variabili in fase di compilazione.</p><h3 id="macro"><strong>Macro</strong></h3><p>Con <code>#define</code> possiamo anche definire una <strong><strong>macro</strong></strong> . La differenza tra una macro e una costante simbolica è che una macro può accettare un argomento e in genere contiene codice, mentre una costante simbolica è un valore:</p><pre><code class="language-c">#define POWER(x) ((x) * (x))
</code></pre><p>Notare le parentesi attorno agli argomenti: questa è una buona pratica per evitare problemi quando la macro viene sostituita nel processo di precompilazione.</p><p>Quindi possiamo usarlo nel nostro codice in questo modo:</p><pre><code class="language-c">printf("%u\n", POWER(4)); //16
</code></pre><p>La grande differenza con le funzioni è che le macro non specificano il tipo dei loro argomenti o valori restituiti, il che potrebbe essere utile in alcuni casi.</p><p>Le macro, tuttavia, sono limitate a definizioni di una sola riga.</p><h3 id="ifdef"><strong>ifdef</strong></h3><p>Possiamo verificare se una costante simbolica o una macro è definita usando <code>#ifdef</code>:</p><pre><code class="language-c">#include &lt;stdio.h&gt;
#define VALUE 1

int main(void) {
#ifdef VALUE
  printf("Il valore è definito\n");
#else
  printf("Il valore non è definito\n");
#endif
}
</code></pre><p>Abbiamo a disposizione anche <code>#ifndev</code> per verificare il contrario (macro non definita).</p><p>Possiamo anche usare <code>#if defined</code> e <code>#if !defined</code> per fare lo stesso compito.</p><p>È comune avvolgere un blocco di codice in un blocco come questo:</p><pre><code class="language-c">#if 0

#endif
</code></pre><p>per impedirne temporaneamente l'esecuzione o per utilizzare una costante simbolica DEBUG:</p><pre><code class="language-c">#define DEBUG 0

#if DEBUG
  //codice inviato solo al compilatore
  //se DEBUG non è 0
#endif
</code></pre><h3 id="costanti-simboliche-predefinite-che-puoi-usare"><strong>Costanti simboliche predefinite che puoi usare</strong></h3><p>Il preprocessore definisce anche un numero di costanti simboliche che puoi usare, identificate dai 2 trattini bassi prima e dopo il nome, tra cui:</p><ul><li><code>__LINE__</code> si traduce nella riga corrente nel file del codice sorgente</li><li><code>__FILE__</code> si traduce nel nome del file</li><li><code>__DATE__</code> si traduce nella data di compilazione, nel formato <code>Mmm gg aaaa</code></li><li><code>__TIME__</code> si traduce nel tempo di compilazione, nel formato <code>hh:mm:ss</code></li></ul><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Grazie mille per aver letto questo manuale!</p><p>Spero che ti ispiri a saperne di più su C.</p><p>Per ulteriori tutorial in inglese, dai un'occhiata al mio blog <a href="https://flaviocopes.com/">flaviocopes.com</a> .</p><p>Invia qualsiasi feedback, segnalazione di errore o opinione a <a href="mailto:hey@flaviocopes.com">hey@flaviocopes.com</a></p><p>E ricorda: <a href="https://flaviocopes.com/page/c-handbook/">puoi ottenere una versione in inglese in PDF ed ePub di questo Manuale per principianti C</a></p><p>Potete contattarmi su Twitter <a href="https://twitter.com/flaviocopes">@flaviocopes</a>.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
