[請問] c程式的問題

看板ask作者 (coo)時間4年前 (2020/04/15 11:54), 4年前編輯推噓6(603)
留言9則, 8人參與, 4年前最新討論串1/1
我好奇為什麼這個印出的是10, 而不是30?有沒有高手幫我解惑,謝謝 #include <iostream> using namespace std; class Test{ public: int i=10; void set(int i){ i=i; } }; int main() { Test t; t.set(30); cout<<t.i<<endl; return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.33.121 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/ask/M.1586922895.A.6DB.html

04/15 12:22, 4年前 , 1F
set裡面應該是 this.i = i;
04/15 12:22, 1F

04/15 12:41, 4年前 , 2F
變數的scope搞錯了
04/15 12:41, 2F

04/15 13:08, 4年前 , 3F
因為寫錯
04/15 13:08, 3F
這是考題當然故意寫錯,只是好奇關鍵點在哪,導致印出是10 ※ 編輯: NTUveryGood (114.137.33.121 臺灣), 04/15/2020 13:14:16

04/15 13:59, 4年前 , 4F
你預設就給了10 只呼叫預設當然是印出10吧
04/15 13:59, 4F

04/15 15:59, 4年前 , 5F
1f比較正確
04/15 15:59, 5F

04/15 18:08, 4年前 , 6F
i =i 的兩個i 都只在set()裡有用
04/15 18:08, 6F

04/15 23:03, 4年前 , 7F
2樓是題目的觀念 1樓是解法
04/15 23:03, 7F

04/18 21:10, 4年前 , 8F
你的30只改變set裡面的區域變數i 不是外面的全域變數i 當
04/18 21:10, 8F

04/18 21:10, 4年前 , 9F
然還是10呀
04/18 21:10, 9F
文章代碼(AID): #1UbeMFRR (ask)