很多同學喜歡用void main(),認為是無返回的main函式,這樣用可能有如下幾種可能:
(1)為了省事,可以少寫返回值(小弟以前就屬於這種)
(2)看到krc裡面用main(),以為就是void main(),主要因為krc的時候還沒有完善的c語言標準,這個用法在c99裡面已經明確禁止了,而且c++之父stroustrop也有說明void main()從來都不是符合標準的
不寫返回值的危害就是main的父程序無法拿到main程序的執行狀態,一般返回0的話就是正常的,非0值是異常的,貼出**:
#include #define std 0
#if std
int main()
#else
void main()
#endif
這裡面std巨集關閉就說明是非標準的void main(),如果開啟就說明是標準的int main(),看下結果:
非標準:
cheny.le@cheny-thinkpad-t420:~$ ./a.out && whoami
i'm not standard
標準:cheny.le@cheny-thinkpad-t420:~$ ./a.out && whoami
i'm standard!
cheny.le
可以看到int main()給shell返回的是0,代表程式正常執行,void main()給shell返回的是非0值,說明程式沒有正常執行(主要原因是因為沒有返回值導致的)。
總結:最好按照標準ansi c的寫法來使用main的返回值,尤其是在需要通過返回值來判斷程序是否正常執行完畢的時候。
void main 與int main的區別
void main 和 int main的區別就是有無返回值啊 在int main 可以出現非 int 型別的東西 我們在寫 時,乙個函式要麼有返回值,要麼沒有返回值,沒有返回值就用void來表示。main函式同樣的,在沒有返回值時加個void 有的編譯器必須main要有返回值 int 那就寫成in...
陣列的誤用
我上次寫了篇文章列舉了我所看到的一些不好的c 教學,並且承諾詳細地解釋這些技術。這篇就是其中的第一篇。我見到有歸因於trenchard more 定義了more array theory 的斷言,說陣列是所有資料結構中最基本的乙個。事實上幾乎沒有哪個在世的程式設計師沒有使用過陣列。如果沒有足夠的證據...
為什麼void main 是錯誤的
原文 為什麼void main 是錯誤的 main 函式通常是乙個c c 程式的入口點。一次為了讓執行時系統 runtime system 能夠正確地呼叫它,它必須遵守一些約定。現代的c 用如下約定 int main 或者 int main int argc,char argv 再者 int mai...