KR C 中的原始 Hello World
以下是原版 Hello World! Brian Kernighan 和 Dennis Ritchie 編寫的 The C Programming Language 一書 (Ritchie 是貝爾實驗室 C 程式語言的原始開發人員),被稱為“K&R”:
Version = K&R
#include <stdio.h>
main()
{
printf("hello, world\n");
}
請注意,在編寫本書第一版(1978)時,C 程式語言並未標準化,並且該程式可能無法在大多數現代編譯器上編譯,除非他們被指示接受 C90 程式碼。
K&R 書中的第一個例子現在被認為質量很差,部分原因是它缺乏 main() 的顯式返回型別,部分原因是它缺少 return 語句。本書的第 2 版是為舊 C89 標準編寫的。在 C89 中,main 的型別預設為 int,但 K&R 示例不會向環境返回定義的值。在 C99 及更高版本的標準中,返回型別是必需的,但是由於 C99 5.1.2.2.3 引入的特殊情況,省略 main 的 return 語句(並且只有 main)是安全的 - 它相當於返回 0,這表明成功。
當程式不使用任何命令列引數時,main 用於託管系統的推薦且最便攜的形式是 int main (void),或者當程式使用命令列引數時,int main(int argc, char **argv)。
C90§5.1.2.2.3 程式終止
從初始呼叫到
main函式的返回等同於呼叫exit函式,其中main函式返回的值作為其引數。如果main函式執行不指定值的返回,則返回到主機環境的終止狀態是未定義的。
C90§6.6.6.4 的 return 宣告
如果執行了沒有表示式的
return語句,並且呼叫者使用了函式呼叫的值,則行為是未定義的。到達終止函式的}等同於執行沒有表示式的return語句。
C99§5.1.2.2.3 程式終止
如果
main函式的返回型別是與int相容的型別,則從初始呼叫到main函式的返回等同於呼叫exit函式,其中main函式返回的值作為其引數; 到達終止main函式的}返回值 0.如果返回型別與int不相容,則返回到主機環境的終止狀態未指定。