C Language Originale "Hello, World!" in K & R C


Esempio

Quello che segue è l'originale "Hello, World!" programma tratto dal libro The C Programming Language di Brian Kernighan e Dennis Ritchie (Ritchie è stato lo sviluppatore originale del linguaggio di programmazione C presso i Bell Labs), denominato "K & R":

K & R
#include <stdio.h>

main()
{
    printf("hello, world\n");
}

Si noti che il linguaggio di programmazione C non era standardizzato al momento della stesura della prima edizione di questo libro (1978) e che questo programma probabilmente non verrà compilato sulla maggior parte dei compilatori moderni a meno che non venga loro richiesto di accettare il codice C90.

Questo primissimo esempio nel libro K & R è ora considerato di scarsa qualità, in parte perché manca un tipo di ritorno esplicito per main() e in parte perché manca un'istruzione return . La seconda edizione del libro è stata scritta per il vecchio standard C89. In C89, il tipo di main predefinito su int , ma l'esempio K & R non restituisce un valore definito per l'ambiente. Negli standard C99 e successivi, è richiesto il tipo restituito, ma è sicuro tralasciare l'istruzione return di main (e solo main ), a causa di un caso speciale introdotto con C99 5.1.2.2.3 - equivale a restituire 0 , che indica il successo.

La forma raccomandata e più portabile di main per i sistemi ospitati è int main (void) quando il programma non usa alcun argomento della riga di comando, o int main(int argc, char **argv) quando il programma usa gli argomenti della riga di comando.


C90 §5.1.2.2.3 Terminazione del programma

Un ritorno dalla chiamata iniziale alla funzione main equivale a chiamare la funzione di exit con il valore restituito dalla funzione main come argomento. Se la funzione main esegue un ritorno che non specifica alcun valore, lo stato di terminazione restituito all'ambiente host non è definito.

C90 §6.6.6.4 Il return dichiarazione

Se viene eseguita un'istruzione return senza un'espressione e il valore della chiamata della funzione viene utilizzato dal chiamante, il comportamento non è definito. Raggiungere il } che termina una funzione equivale all'esecuzione di un'istruzione return senza un'espressione.

C99 §5.1.2.2.3 Terminazione del programma

Se il tipo restituito della funzione main è un tipo compatibile con int , un ritorno dalla chiamata iniziale alla funzione main equivale a chiamare la funzione di exit con il valore restituito dalla funzione main come argomento; raggiungendo il } che termina la funzione main restituisce un valore di 0. Se il tipo restituito non è compatibile con int , lo stato di terminazione restituito all'ambiente host non è specificato.