The assignment statement
Download
Report
Transcript The assignment statement
The Assignment
Operator and
Statement
The Most Common Statement you
will use
Copyright 2004-2006 Curt Hill
Changing variables
• What can change in a variable?
– Only the value
– The type and name are set only at
compile time
• What statements can change the
value?
–
–
–
–
Declaration might or might not initialize
An assignment
Some types of method calls
Input statements are a type of method
call
Copyright 2004-2006 Curt Hill
Assignment Statement
• Simple form:
variable = expression ;
• Simple meaning:
the value computed from the
expression is stored in the variable
• Similar to the assignment in very
many languages
Copyright 2004-2006 Curt Hill
What is an expression?
•
•
•
•
•
A legal combination of the following:
Constants
Variables
Operators
The legal combinations are usually
intuitive
Copyright 2004-2006 Curt Hill
Legal Examples
• Suppose the following declarations:
int a,b,c;
double x,y,z;
• The following are legal:
a = 5;
// constant
x = y;
// variable
y = 2*z – x/y; // expression
Copyright 2004-2006 Curt Hill
General rules
• Item on left must be a variable
• The two sides should be of the same
type with a few exceptions
– A weaker type may be converted to a
stronger type
– A float is weaker than a double
– A double is stronger than an int
• The right hand side items are not
changed
• The old value of the left hand side is
lost when a new value is stored
Copyright 2004-2006 Curt Hill
More Examples
• Suppose the following declarations:
int a,b,c; double x,y,z;
• The following are not legal:
5 = -c;
// cannot change
x = y
// no semicolon
x = y + * z;
// malformed expr
• The following are legal but with issues:
x = a;
// Stronger type
a = 5.8;
// loses precision
x = false;
// incompatible
Copyright 2004-2006 Curt Hill
Expression Values
• What is the value of:
2 + 3*2 + 1
• Two reasonable candidates:
• 11 = ((2+3) * 2) + 1
– Left to right evaluation
– Some calculators do it this way
• 9 = 2 + (3*2) + 1
– The multiplication precedes addition
– Algebra uses this way
• We must choose one of these
Copyright 2004-2006 Curt Hill
Precedence
• Clearly we cannot have both 11 and
9 correct or we never know what a
computation produces
• C++ like most (but not all)
programming languages follows
Algebra
• Multiplication precedes addition
• This gives rise to a precedence
chart
– Shows the level of importance for
operators
Copyright 2004-2006 Curt Hill
Precedence Chart
• Highest to lowest
–
–
–
–
()
- + (Unary sign change)
*/%
+ - (Binary arithmetic)
• There are several others which we
will encounter soon enough
Copyright 2004-2006 Curt Hill
Algebra and the Assignment
• There is often confusion about the
assignment because it looks like an
equation
• An equation is a true or false
statement
• An assignment is a command to
perform some action
Copyright 2004-2006 Curt Hill
Equations and Assignments
• The equation:
x=y+5
– States that the value of x is five larger than y’s
value
– This may be true or false depending on the
value of x and y
– Usually our job is to find an x and y that makes
it true – this is called a solution
• The assignment:
x = y + 5;
– Commands that the value of x is computed to
be five plus y’s value
Copyright 2004-2006 Curt Hill
Another Example
• The equation:
x=x+1
has no solution
– It can never be true
– No value may equal itself plus one
• The assignment:
x = x + 1;
increments x
– It is a command and will be carried out
Copyright 2004-2006 Curt Hill
Another Example
• Suppose:
int a=2, b=5, c=-7;
• What happens to the variable values
when:
c = a*b - b%c+1;
b = a-c/(1+a*2);
is executed?
• The value of c becomes 6 and the value of
b becomes 1
Copyright 2004-2006 Curt Hill
How does this work?
• int
c =
•c =
•c =
•c =
•b =
•b =
•b =
•b =
•b =
•b =
a=2, b=5, c=-7;
a*b - b%c+1;
2*5 – 5%-7+1
10 –
5 +1
6
a – c/(1+a*2);
2 – 6/(1+2*2)
2 – 6/(1+4)
2 – 6/5
2 – 1
1
Copyright 2004-2006 Curt Hill
Precedence Chart Again
• Highest to lowest
–
–
–
–
–
()
- + (Unary – sign change)
*/%
+ - (Binary arithmetic)
=
• Yes, there are quite a few more!
Copyright 2004-2006 Curt Hill
Declarations Again
• Declarations are executable or nonexecutable?
• Yes, either
• A declaration may initialize the
variable by following with an
assignment
• Example:
int a = 5;
double d = 2, e, f=1e5;
Copyright 2004-2006 Curt Hill
Initialization rules
• The expression following the
declaration may be any expression
– Any variables must be defined
– Example:
int a=2, b=3;
…
int c = a*b-2;
• Variables without the equal sign are
not initialized
• Like an assignment, the types
should be acceptable
Copyright 2004-2006 Curt Hill