| I l@ve RuBoard |
|
6.8 The Assignment Anywhere Side EffectC++ allows the use of assignment statements almost anyplace. For example, you can put an assignment statement inside another assignment statement: // don't program like this average = total_value / (number_of_entries = last - first); This is the equivalent of saying: // program like this number_of_entries = last - first; average = total_value / number_of_entries; The first version buries the assignment of number_of_entries inside the expression. Programs should be clear and simple and should not hide anything. The most important rule of programming is KEEP IT SIMPLE. C++ also allows you to put assignment statements in the while conditional. For example: // do not program like this
while ((current_number = last_number + old_number) < 100)
std::cout << "Term " << current_number << '\n';
Avoid this type of programming. Notice how much clearer the logic is in the following version: // program like this
while (true) {
current_number = last_number + old_number;
if (current_number >= 100)
break;
std::cout << "Term " << current_number << '\n';
}
Question 6-1: For some strange reason, the program in Example 6-4 thinks that everyone owes a balance of 0 dollars. Why? Example 6-4. balance/balance.cpp#include <iostream>
int balance_owed; // amount owed
int main( )
{
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";
return (0);
}
Sample output: Enter number of dollars owed: 12 You owe 0 dollars. |
| I l@ve RuBoard |
|