If you're a beginning programmer and want to get more deeply into programming with variables, you've come to the right place. This article, the second of three parts, is excerpted from chapter two of the book Beginning C, written by Ivor Horton (Apress, 2004; ISBN: 1590592530).
First Steps in (C) Programming, continued (Page 1 of 8 )
Unary Operators
The operators that you’ve dealt with so far have been binary operators. These operators are called binary operators because they operate on two data items. Incidentally, the items of data that an operator applies to are called operands. For example, the multiplication is a binary operator because it has two operands and the effect is to multiply one operand value by the other. However, there are some operators that are unary, meaning that they need only one operand. You’ll see more examples later, but for now you’ll just take a look at the single most common unary operator.
The Unary Minus Operator
You’ll find the unary operator very useful in more complicated programs. It makes whatever is positive negative, and vice versa. You might not immediately realize when you would use this, but think about keeping track of your bank account. Say you have $200 in the bank. You record what happens to this money in a book with two columns, one for money that you pay out and another for money that you receive. One column is your expenditure (negative) and the other is your revenue (positive).
You decide to buy a CD for $50 and a book for $25. If all goes well, when you compare the initial value in the bank and subtract the expenditure ($75), you should end up with what’s left. Table 2-2 shows how these entries could typically be recorded.
Table 2-2. Recording Revenues and Expenditures
Entry Check received
Revenue $200
Expenditure --
Bank Balance $200
CD
--
$50
$150
Book
--
$25
$125
Closing balance
$200
$75
$125
If these numbers were stored in variables, you could enter both the revenue and expenditure as positive values and only make the number negative when you wanted to calculate how much was left. You could do this by simply placing a minus sign (-) in front of the variable name.
To output the amount you had spent as a negative value, you could write
int expenditure = 75; printf("Your balance has changed by %d.", -expenditure);
This would result in the output
-------------------------------------------- Your balance has changed by -75. --------------------------------------------
The minus sign will remind you that you’ve spent this money rather than gained it. Note that the expression-expendituredoesn’t change the value stored inexpenditure—it’s still 75. The value of the expression is –75.
The unary minus operator in the expression-expenditurespecifies an action. Instructions must be executed in your program to evaluate this. This is subtly different from when you use the minus operator when you write a negative number such as –75 or –1.25. In this case, the minus doesn’t result in an action and no instructions need to be executed when your program is running. It simply instructs the compiler to create the appropriate negative constant in your program.