[英]Why i'm getting overflow?
我是 c++ 的新手,仍在學習中。 我被指派創建一個簡單的銀行模擬器,只是偶然發現了一個我似乎無法弄清楚的問題。 每當我嘗試檢查余額時,它都會顯示一些數字和字母,我的第一個想法是它顯示 memory 地址或溢出。 我可以先存入一些東西,它會被添加到 balance 變量中並顯示在程序中,而不會出現一些笨拙的數字和字母。 我的目標是確保余額始終顯示為 0,直到用戶存款或取款。
我以某種方式設法通過使用 float 而不是 double 來解決這個問題,我不太確定為什么它在這一點上起作用,因為我已經厭倦了甚至考慮它,但我寧願使用 double 因為這個程序可能會使用更多數據。
如果對我要說的內容有任何不清楚的地方,我會盡快嘗試回答您的問題。 我還在這里添加了一張圖片來向您展示我在說什么。
#include <iostream>
using namespace std;
int main()
{
while(true){
cout << "[D]eposit\n";
cout << "[W]ithdrawal\n";
cout << "[B]alance\n";
cout << "[I]nterest payment\n";
cout << "[E]xit\n";
char menu;
double balance, deposit, withdraw;
cin >> menu;
switch(menu)
{
case'D':
cout << "[DEPOSIT]\n" << "Deposit: ";
cin >> deposit;
balance += deposit;
continue;
case'W':
cout <<"[WITHDRAWAL]\n" << "Withdraw: ";
cin >> withdraw;
balance -= withdraw;
continue;
case'B':
cout << "[BALANCE]\n" << "Amount: " << balance;
continue;
case'I':
cout << "[INTEREST PAYMENT]\n";
continue;
case 'E':
cout << "Program is closing...";
break;
default:
cout << "Please use uppercase letters";
continue;
}
break;
}
return 0;
}
余額未初始化,因此當您添加/減去金額時,由於余額的隨機初始值,結果是奇數。
那么獲取亂碼數據的主要原因是因為您的balance
變量未初始化,並且訪問它是未定義的行為。
您可以通過這樣做來修復它:
double balance = 0;
double deposit, withdraw;
此外,您的程序不會按預期運行,因為您在 while 循環內聲明了balance
變量。 只需在循環外聲明變量即可使其按預期工作。
double balance = 0;
double deposit, withdraw;
while(true){
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.