c/c++:帶有返回類型的函數沒有return語句會怎么樣?


c/c++:帶有返回類型的函數沒有return語句會怎么樣

背景

機器有時候啟動的時候發現異常,跟蹤了代碼發現,有人在寫一個int函數的時候,有一個分支沒有return

參考:https://www.cnblogs.com/mobius2018/p/9844060.html

結論

C++編譯器不允許這種做法,會報編譯錯誤

C編譯器如GCC一般不會報錯,但返回的值不確定:

原理:函數聲明時的返回類型指明,函數出棧后要去寄存器中取值(取出來的是return值的地址),函數中沒有return,只是沒有給這個寄存器存入合法的值。
出棧后還是會去讀寄存器,只是讀出來的是垃圾數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM