C Ansi

Le C ANSI est généralement le dialecte le plus portable est compatible avec le plus grand nombre de machines et compilateurs. Le C++ en est une surcouche à
quelques différence près .

Nouveautés depuis le C K&R

Apportées depuis le C++

Les commentaires d’une ligne //.

Les fonctions a prototype.

Les enumerations.

Différences avec le C K&R

Le C Ansi consière que les arguments d’une fonction ont la même portée que les variables déclarées dans la fonction.

int square(int toto) {
    int toto;  // illégal depuis le C Ansi
}

Les chaines de caractère sont concaténées à la 6ème phase de traduction . On peut facilement construire des chaines de caractère multiligne.

int main()
{
    "aa"
    "bb"; // "aabb"
}

En K&R C on devait utiliser une anti barre oblique

int main()
{
    "aa\
bb"; // "aabb"
}

On peut rapidement creer des tableaux de caractères à partir d’une chaine littérale, le caractère nul terminal pouvcant être élidé si besoin

int main()
{
    char tab[4] = "toto"; // noter que le \0 terminal est simplement ignoré
}

C++ : Cette construction n’a pas été adoptée par le C++ qui le considère une tentative éronée d’initialiser un tableau de 4 caractères avec 5 valeurs.