[問題] int變數沒給初始值 會自動給0?

看板C_and_CPP作者時間10年前 (2013/11/23 12:28), 編輯推噓5(5014)
留言19則, 13人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C++ 問題(Question): int a; 印象中沒給初始值 系統會給他一個隨便的數字 可能是35或50等等 可是試的時候 cout出的是0 這是正確的嗎? 預期的正確結果(Expected Output): 隨便一個數 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> using namespace std; int main() { int a; cout << a; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.24.211

11/23 12:28, , 1F
請問你用的編譯器是?
11/23 12:28, 1F
基本款 Dev C++

11/23 12:30, , 2F
13誡
11/23 12:30, 2F

11/23 12:58, , 3F
至少會有warning吧
11/23 12:58, 3F
Dev功能比較簡陋 (所以沒有warning?) 待會用Visual studio試試 ※ 編輯: nature23306 來自: 123.192.24.211 (11/23 13:11)

11/23 13:18, , 4F
那是剛好,任意型態應該使用 T var = T()
11/23 13:18, 4F

11/23 14:56, , 5F
印象中global的才會給0, 其他都會亂給
11/23 14:56, 5F

11/23 16:14, , 6F
讓我想到 mac gcc 有次竟然會給 private 變數設 0,震怒
11/23 16:14, 6F

11/23 16:18, , 7F
我猜這是未定義行為,就算給0也是很合邏輯的 (?)
11/23 16:18, 7F

11/23 16:19, , 8F
dev-C++應該也會有編譯選項可以跳出警告?
11/23 16:19, 8F

11/23 16:19, , 9F
另外VC的Debug Mode好像會預設給一個0xCD幫助找問題
11/23 16:19, 9F

11/23 17:17, , 10F
給什麼都不奇怪,別浪費腦筋在這
11/23 17:17, 10F

11/23 17:17, , 11F
只是剛好是給0,或是編譯自動幫你補0
11/23 17:17, 11F

11/23 18:47, , 12F
不可能啦不可能啦不可能啦不可能啦不可能啦不可能啦
11/23 18:47, 12F

11/23 19:48, , 13F
DEV測試結果並沒有賦予0或其他特定值
11/23 19:48, 13F

11/23 20:13, , 14F
@ck574b027 Clang 會自動初始化變數, 這是 feature XD
11/23 20:13, 14F

11/23 21:14, , 15F
別再ide跟compiler搞不清楚了
11/23 21:14, 15F

11/24 01:51, , 16F
compiler給-wunused 就會跳warning
11/24 01:51, 16F

11/24 09:42, , 17F
規範沒有要求給0,那是編譯器自行增加的功能
11/24 09:42, 17F

11/24 12:37, , 18F
只是stack剛跑時剛好是0。和compiler無關。是loader和OS
11/24 12:37, 18F

11/24 17:31, , 19F
不同的編譯器有不同的設計觀點,能夠親手初始賦值最好
11/24 17:31, 19F
文章代碼(AID): #1Ia2xGjJ (C_and_CPP)