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
不相容,則返回到主機環境的終止狀態未指定。