[問題] C語言return問題

看板C_and_CPP (C/C++)作者 (無)時間9年前 (2017/01/17 02:57), 編輯推噓4(517)
留言13則, 11人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 單純測試有設定return型態但是沒有return值的狀況 餵入的資料(Input):預期的正確結果(Expected Output): compile不過 錯誤結果(Wrong Output): 印出傳入的數值 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> int sum(int a){ a+1; } int main(){ int a = 5; printf("%d", sum(a)); } 補充說明(Supplement): 以前初學C的時候因為沒測試過這種狀況 前兩天碰到但是不知道原理 原本猜測會在編譯時候出錯 但是編譯可以過 以及還能夠印出值(5) 代表以前學到的概念錯很大 想請問compiler是怎麽處理這個部分的呢? (以為compiler不會過但是過了,過了以為數值會是未知數卻是5這樣) 希望能有前輩能解惑 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.240.142 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1484593030.A.7D0.html

01/17 04:04, , 1F
大概是calling stack的關係
01/17 04:04, 1F

01/17 09:15, , 2F
return值沒寫
01/17 09:15, 2F

01/17 09:32, , 3F
你為什麼覺得應該要能編譯與執行?
01/17 09:32, 3F

01/17 10:31, , 4F
只是Warning開的不夠多吧(′・ω・`)
01/17 10:31, 4F

01/17 10:54, , 5F
-Wall
01/17 10:54, 5F

01/17 11:02, , 6F
印象中會報warning,印出5應該屬於未定義行為
01/17 11:02, 6F

01/17 11:17, , 7F
換個編譯器看看,可能結果會不一樣
01/17 11:17, 7F

01/17 11:17, , 8F
玩玩就好,真的要用的程式不要這樣寫
01/17 11:17, 8F

01/17 12:58, , 9F
這是一個剛學的朋友問的問題 但是能力不夠給他答案
01/17 12:58, 9F

01/17 15:26, , 10F
因為有個原本要放return值的位置 因為沒return 所以就
01/17 15:26, 10F

01/17 15:26, , 11F
抓到a的位置
01/17 15:26, 11F

01/17 23:19, , 12F
遇過compiler會重複使用位置, 跟最佳化有關嗎?
01/17 23:19, 12F

01/18 06:50, , 13F
又來一個未定義行為
01/18 06:50, 13F
文章代碼(AID): #1OVHU6VG (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1OVHU6VG (C_and_CPP)