C (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Migliorato la pagina
Riga 96:
Esistono inoltre i seguenti modificatori, che si possono anteporre ai nomi dei tipi interi per cambiarne delle caratteristiche: {{Codice|codice=signed|linguaggio=C}} specifica che l'intero può essere positivo o negativo; {{Codice|codice=unsigned|linguaggio=C}} specifica che l'intero può essere solo positivo; {{Codice|codice=short|linguaggio=C}} riduce la memoria assegnata al tipo di dato, restringendo di conseguenza l'intervallo numerico rappresentabile; {{Codice|codice=long|linguaggio=C}} funziona in maniera opposta, aumentando la memoria e ampliando l'intervallo.<ref name="ILC2-2-2"/>
 
C supporta eed fautilizza largolargamente uso dii [[Puntatore (programmazione)|puntatori]], variabili che hanno come valore un [[indirizzo di memoria]].
 
I tipi complessi presenti sono gli [[array]], le enumerazioni ({{Codice|codice=enum|linguaggio=C}}), le strutture ({{Codice|codice=struct|linguaggio=C}}) e le unioni ({{Codice|codice=union|linguaggio=C}}). Le [[Stringa (informatica)|stringhe]] sono implementate come semplici array di caratteri terminati da un [[Carattere null|carattere nullo]] ("null character", avente codice ASCII pari a 0) e non hanno un tipo apposito.
Riga 139:
{{Vedi anche|Hello world}}
 
Il seguente esempio stampa il testo <code>Hello world!</code> sullo [[standard output]] (che normalmente coincide con lo schermo del [[terminale (informatica)|terminale]] utilizzato da chi esegue il programma). Nella didattica informatica, l'uso di introdurre i fondamenti di un linguaggio di programmazione con un programma che stampa a video "Ciaouna mondo!"scritta di questo tipo deriva proprio da questo celebre esempio, tratto dal libro ''[[Il linguaggio C]]'' di Kernighan e Ritchie.
<syntaxhighlight lang="c" line="1">
#include <stdio.h>
Riga 237:
=== C++ ===
{{vedi anche|C++}}
Il linguaggio di programmazione [[C++]] fuè originariamentestrettamente derivato da C. Tuttavia, ma non tutti i programmi C sono validi in C++ e viceversa. Mentre C e C++ evolvevano indipendentemente, sono aumentate le loro incompatibilità<ref>{{Cita web |url=http://david.tribble.com/text/cdiffs.htm|titolo=Incompatibilities Between ISO C and ISO C++}}</ref>. La versione C99 creò un numero di conflitti in più. Le differenze rendono difficile la scrittura di programmi e librerie che funzionino sia in C che in C++, e creano confusione in chi programma in entrambi i linguaggi. La disparità rende difficile per entrambi i linguaggi l'adozione di caratteristiche dall'altro.
 
[[Bjarne Stroustrup]], il creatore di C++, ha ripetutamente suggerito<ref>{{Cita web |url=http://www.research.att.com/~bs/sibling_rivalry.pdf|titolo=Sibling Rivalry: C and C++}}</ref> che le incompatibilità tra C e C++ dovrebbero essere ridotte il più possibile per massimizzare l'interoperatività tra i due linguaggi. Altri hanno sostenuto che poiché C e C++ sono linguaggi differenti, la compatibilità tra i due è utile ma non vitale. Secondo questa posizione, gli sforzi per ridurre l'incompatibilità non devono ostacolare i tentativi per migliorare in modo autonomo i linguaggi.
Riga 246:
* Singole costanti di caratteri (racchiuse tramite apici singoli) hanno la dimensione di un {{Codice|codice=int|linguaggio=C}} in C e di un {{Codice|codice=char|linguaggio=C++}} in C++.
<!-- Quindi in C <code>sizeof 'a' == sizeof(int)</code> mentre in C++ <code>sizeof 'a' == sizeof(char)</code>.--><!-- Nevertheless, even in C they will never exceed the values that a <code>char</code> can store, so <code>(char)'a'</code> is a safe conversion that will only change the type of the expression (here it is changed from int to char), but not its value (which on systems using ASCII-encoded characters is 97).-->
* Parole chiave addizionali sono introdotte in C++, e quindi non possono essere usate come identificatori come invece era lecito in C (per esempio {{Codice|codice=try|linguaggio=C++}}, {{Codice|codice=catch|linguaggio=C++}}, {{Codice|codice=template|linguaggio=C++}}, {{Codice|codice=new|linguaggio=C++}}, {{Codice|codice=delete|linguaggio=C++}}, ecc...)
* In C++, il compilatore crea automaticamente un ''tag'' per ogni {{Codice|codice=struct|linguaggio=C++}}, {{Codice|codice=union|linguaggio=C++}} o {{Codice|codice=enum|linguaggio=C++}}, quindi {{Codice|codice=struct S {};|linguaggio=C++}} in C++, in C è equivalente a {{Codice|codice=typedef struct S {} S;|linguaggio=C}}.
 
Riga 253:
Il linguaggio Objective C deve la sua popolarità a [[Apple]] che lo ha scelto come base per i suoi sistemi operativi [[macOS]], [[iOS]], [[watchOS]] e [[tvOS]]. È un linguaggio orientato agli oggetti e, a differenza di [[C++]], mantiene la piena compatibilità con C.
 
Nel 2014, Apple presentaha presentato un nuovo linguaggio, [[Swift (linguaggio di programmazione)|Swift]], che ha sostituito Objective C nella programmazione sui sistemi operativi sopracitati.
 
== Note ==