//---------------------------------------------------------------------------
#include <iostream>
//---------------------------------------------------------------------------
int balance_owed; //帳戶餘額
int main(int argc, char* argv[])
{
std::cout << "Enter number of dollars owed:";
std::cin >> balance_owed;
if (balance_owed = 0)
std::cout << "You owe nothing.\n";
else
std::cout << "You owe " << balance_owed << " dollars.\n";
std::system("pause");
return 0;
}
//---------------------------------------------------------------------------
輸出結果:
Enter number of dollars owed: 12
You owe 0 dollars.
Q:為什麼每個人的帳戶會變成0?
Ans:if (balance_owed = 0) 用的是一個等號而不是兩個等號。
C++ 會將 balance_owed 的值設為0,並且測試該值 (0) ;
若結果不是 0 (條件成立),就會執行 if 子句。
但因為結果為 0 (條件不成立) ,所以會執行 else 子句。
該行敘述:
if (balance_owed = 0)
等於:
balance_owed = 0;
if ( balance_owed != 0)
應更正為:
if (balance_owed == 0)
題目來源:C++風格與藝術 第二版 Steve Oualline 著 黃吉霈 編譯