[問題] int跟char一起宣告的Bug?
其實我不知道要怎麼下標題才好,因為我也不知道問題出在哪邊,我猜可能是記憶體的問
題,可是我第一次遇到這種問題,所以想問看看有沒有人知道,還請不吝回答,謝謝。
程式碼:
// 宣告部分
int Strength = 999;
int Agility = 999;
.
.
.
.
int tmp_Str;
int tmp_Agi;
char answer;
// 運作部分
.
.
.
.
.
tmp_Str = Strength;
tmp_Agi = Agility;
rewind(stdin);
_getch();
.
.
. (省略用printf畫圖的部分)
.
.
printf("1.攻擊 2.技能 3.逃跑(回合數:1 / 5)\n");
printf("tmp_Agi = %d", tmp_Agi);
printf("> ");
scanf("%s", &answer);
if (answer == '1')
{
printf("tmp_Agi = %d", tmp_Agi);
.
.
.
.
}
https://i.imgur.com/r6w9W8g.png
![](https://i.imgur.com/r6w9W8g.jpg)
(執行的結果圖)
發生的問題是當使用者輸入答案後,本來存在tmp_Agi裡面的數字會產生改變,可是我沒動
過這個變數,用單步執行也找不出問題來。不過如果在answer上面隨便宣告一個無用的int
變數,就可以避免這個問題發生,如下所示:
int tmp_Str;
int tmp_Agi;
int asdf;
char answer;
所以我猜大概是記憶體配置的問題,但實際上我也不太清楚,因為寫程式到現在第一次發
生這問題,所以還請知道答案的人可以告訴我,謝謝。
--
廚廚復廚廚,木蘭中路廚;不聞支援聲,唯見三嘆息;
問女何冥門,問女何坦營,前線有冥門,據點有坦營。
昨夜軍管區,文賓大點兵;國任十二場;場場對AT;
前線無防滿,隊友無鑲嵌;願為M盾戰,從此發佛心。
東路被放生,西路被蓋傷,南路被集火,北路被肛肛。
~選自卡薩多民歌《木蘭詩》
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.158.76.133
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1525103380.A.7F0.html
※ 編輯: allen20937 (182.158.76.133), 04/30/2018 23:50:47
※ 編輯: allen20937 (182.158.76.133), 04/30/2018 23:51:07
推
04/30 23:54,
6年前
, 1F
04/30 23:54, 1F
※ 編輯: allen20937 (182.158.76.133), 05/01/2018 00:01:57
→
05/01 00:06,
6年前
, 2F
05/01 00:06, 2F
→
05/01 00:07,
6年前
, 3F
05/01 00:07, 3F
→
05/01 00:08,
6年前
, 4F
05/01 00:08, 4F
→
05/01 00:14,
6年前
, 5F
05/01 00:14, 5F
→
05/01 00:15,
6年前
, 6F
05/01 00:15, 6F
→
05/01 00:17,
6年前
, 7F
05/01 00:17, 7F
→
05/01 00:19,
6年前
, 8F
05/01 00:19, 8F
→
05/01 07:33,
6年前
, 9F
05/01 07:33, 9F
推
05/02 01:30,
6年前
, 10F
05/02 01:30, 10F
→
05/02 01:30,
6年前
, 11F
05/02 01:30, 11F
→
05/02 01:30,
6年前
, 12F
05/02 01:30, 12F
→
05/02 01:30,
6年前
, 13F
05/02 01:30, 13F