47
CS1313: Numeric Data Types Lesson Fall 2004 1 Arithmetic Expressions Outline 1. Numeric Data Types Outline 2. Arithmetic Expressions Outline 3. What is an Expression? #1 4. What is an Expression? #2 5. What is an Expression? #3 6. What is an Expression? #4 7. What is an Expression? #5 8. What is an Expression? #6 9. What is an Arithmetic Expression? #1 10. What is an Arithmetic Expression? #2 11. What is an Arithmetic Expression? #3Arithmetic Expression Examples 12. Unary & Binary Arithmetic Operations 13. Arithmetic Operations 14. Structure of Arithmetic Expressions #1 15. Structure of Arithmetic Expressions #2 16. int-valued & float-valued Expressions 17. Precedence Order 18. Precedence Order Examples 19. Precedence Order Example: int #1 20. Precedence Order Example: int #2 21. Precedence Order Example: float #1 22. Precedence Order Example: float #2 23. Named Constant & Variable Operands #1 24. Named Constant & Variable Operands #2 25. Named Constant & Variable Operands #2 26. Constant-Valued Expressions #1 27. Constant-Valued Expressions #2 28. Constant-Valued Expressions #3 29. Assignments W/O Expressions: Not Very Useful 30. Assignments with Expressions: Crucial 31. Meaning of Assignment w/Expression 32. Assignment w/Expression Example 33. Assignment w/Same Variable on Both Sides 34. Same Variable on Both Sides: Meaning 35. Same Variable on Both Sides: Example 36. Single Mode Arithmetic 37. int vs float Arithmetic 38. int vs float Division 39. int Division Truncates 40. Division By Zero 41. Division By Zero Example #1 42. Division By Zero Example #2 43. Floating Point Exception 44. Mixed Mode Arithmetic #1 45. Mixed Mode Arithmetic #2 46. Promoting an int to a float 47. Exercise: Writing a Program

Arithmetic Expressions Outline

  • Upload
    skah

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

Arithmetic Expressions Outline. Constant-Valued Expressions #1 Constant-Valued Expressions #2 Constant-Valued Expressions #3 Assignments W/O Expressions: Not Very Useful Assignments with Expressions: Crucial Meaning of Assignment w/Expression Assignment w/Expression Example - PowerPoint PPT Presentation

Citation preview

Page 1: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 1

Arithmetic Expressions Outline1. Numeric Data Types Outline2. Arithmetic Expressions Outline3. What is an Expression? #14. What is an Expression? #25. What is an Expression? #36. What is an Expression? #47. What is an Expression? #58. What is an Expression? #69. What is an Arithmetic Expression? #110. What is an Arithmetic Expression? #211. What is an Arithmetic Expression? #3Arithmetic

Expression Examples12. Unary & Binary Arithmetic Operations13. Arithmetic Operations14. Structure of Arithmetic Expressions #115. Structure of Arithmetic Expressions #216. int-valued & float-valued Expressions17. Precedence Order18. Precedence Order Examples19. Precedence Order Example: int #120. Precedence Order Example: int #221. Precedence Order Example: float #122. Precedence Order Example: float #223. Named Constant & Variable Operands #124. Named Constant & Variable Operands #225. Named Constant & Variable Operands #2

26. Constant-Valued Expressions #127. Constant-Valued Expressions #228. Constant-Valued Expressions #329. Assignments W/O Expressions: Not Very Useful30. Assignments with Expressions: Crucial31. Meaning of Assignment w/Expression32. Assignment w/Expression Example33. Assignment w/Same Variable on Both Sides34. Same Variable on Both Sides: Meaning35. Same Variable on Both Sides: Example36. Single Mode Arithmetic37. int vs float Arithmetic38. int vs float Division39. int Division Truncates40. Division By Zero41. Division By Zero Example #142. Division By Zero Example #243. Floating Point Exception44. Mixed Mode Arithmetic #145. Mixed Mode Arithmetic #2

46. Promoting an int to a float

47. Exercise: Writing a Program

Page 2: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 2

What is an Expression? #1

a + b - c * d / e % f – (398 + g) * 5981 / 15 % h

In programming, an expression is a combination of: Operands Operators Parentheses: ( )

Not surprisingly, an expression in a program can look very much like an expression in math (though not necessarily identical). This is on purpose.

Page 3: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 3

What is an Expression? #2

a + b - c * d / e % f – (398 + g) * 5981 / 15 % h

In programming, an expression is a combination of: Operands, such as:

Literal constants Named constants Variables Function invocations (which we’ll discuss later)

Operators Parentheses: ( )

Page 4: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 4

What is an Expression? #3

a + b - c * d / e % f – (398 + g) * 5981 / 15 % h

In programming, an expression is a combination of: Operands Operators, such as:

Arithmetic Operators Relational Operators Logical Operators

Parentheses: ( )

Page 5: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 5

What is an Expression? #4

a + b - c * d / e % f – (398 + g) * 5981 / 15 % h

In programming, an expression is a combination of: Operands Operators, such as:

Arithmetic Operators Addition: + Subtraction: - Multiplication: * Division: / Modulus (remainder): % (only for int operands)

Relational Operators Logical Operators

Parentheses: ( )

Page 6: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 6

What is an Expression? #5

a + b - c * d / e % f – (398 + g) * 5981 / 15 % hIn programming, an expression is a combination of: Operands Operators, such as:

Arithmetic Operators Relational Operators

Equal: == Not Equal: != Less Than: < Less Than or Equal To: <= Greater Than: > Greater Than or Equal To: >=

Logical Operators Parentheses: ( )

Page 7: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 7

What is an Expression? #6

a + b - c * d / e % f – (398 + g) * 5981 / 15 % h

In programming, an expression is a combination of: Operands Operators, such as:

Arithmetic Operators Relational Operators Logical Operators

Negation (NOT): ! Conjunction (AND): && Disjunction (OR): ||

Parentheses: ( )

Page 8: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 8

What is an Arithmetic Expression? #1

An arithmetic expression (also called a numeric expression) is a combination of:

Numeric operands Arithmetic Operators Parentheses: ( )

Page 9: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 9

What is an Arithmetic Expression? #2

An arithmetic expression (also called a numeric expression) is a combination of:

Numeric operands, such as: int & float literal constants (BAD BAD BAD) int & float named constants (GOOD) int & float variables int-valued & float-valued function invocations

Arithmetic Operators Parentheses: ( )

Page 10: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 10

What is an Arithmetic Expression? #3

An arithmetic expression (also called a numeric expression) is a combination of:

Numeric operands Arithmetic Operators, such as:

Identity: + Negation: - Addition: + Subtraction: - Multiplication: * Division: / Modulus (remainder): % (only for int operands)

Parentheses: ( )

Page 11: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 11

Arithmetic Expression Examples

x

+x

-x

x + y

x - y

x * y

x / y

x % y

x + y - (z % 22) * 7 / cos(theta)

Page 12: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 12

Unary & Binary Arithmetic Operations

Arithmetic operations come in two varieties:unary and binary.

A unary operation is an operation that has only one operand. For example:

-xHere, the operand is x, the operator is the minus

sign, and the operation is negation.A binary operation uses two operands. For example:

y + zHere, the operands are y and z, the operator is the

plus sign, and the operation is addition.

Page 13: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 13

Arithmetic OperationsOperation Kind Oper-

atorUsage Value

Identity Unary +none

+x+x

Value of xValue of x

Negation Unary - -x Additive inverse of x

Addition Binary + x + y Sum of x and y

Subtraction Binary - x – y Difference between x and y

Multiplication Binary * x * y Product of x times y(i.e., x . y)

Division Binary / x / y Quotient of x divided by y(i.e., x ÷ y)

Modulus(int only)

Binary % x % y Remainder of x divided by y (i.e., x - └ x ÷ y┘

. y)

Page 14: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 14

Structure of Arithmetic Expressions #1

An arithmetic expression can be long and complicated. For example:

a + b - c * d / e % fTerms and operators can be mixed together in

almost limitless variety, but they must follow the rule that a unary operator has a term immediately to its right and a binary operator has terms on both its left and its right:-a + b - c * d / e % f – (398 + g) * 5981 / 15 % h

Parentheses can be placed around any unary or binary subexpression:

((-a) + b - c) * d / e % f – ((398 + g) * 5981 / 15) % h

Page 15: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 15

Structure of Arithmetic Expressions #2

Putting a term in parentheses may change the value of the expression, because a term inside parentheses will be calculated first. For example:

a + b * c is evaluated as

“multiply b by c, then add a,” but

(a + b) * c is evaluated as

“add a and b, then multiply by c”

Note: as a general rule, you cannot put two operators in a row (but we’ll see exceptions, sort of).

Page 16: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 16

int-valued & float-valued Expressions

An int-valued expression is an expression that, when it is evaluated, has an int result.

A float-valued expression is an expression that, when it is evaluated, has a float result.

Page 17: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 17

Precedence Order

In the absence of parentheses that explicitly state the order of operations, the order of precedence (also known as the order of priority) is:

First: multiplication and division, left to right, and then

Second: addition, subtraction, identity and negation, left to right

After taking into account the above rules, the expression as a whole is evaluated left to right.

Page 18: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 18

Precedence Order Examples 1 - 2 - 3 = -1 - 3 = -4-4 but

1 - (2 - 3) = 1 - (-1) = 22 1 + 2 * 3 + 4 = 1 + 6 + 4 = 7 + 4 = 1111 but

(1 + 2) * 3 + 4 = 3 * 3 + 4 = 9 + 4 = 1313 24 / 2 * 4 = 12 * 4 = 4848 but

24 / (2 * 4) = 24 / 8 = 33 5 + 4 % 6 / 2 = 5 + 4 / 2 = 5 + 2 = 7 7 but

5 + 4 % (6 / 2) = 5 + 4 % 3 = 5 + 1 = 6 6 but

(5 + 4) % (6 / 2) = 9 % (6 / 2) = 9 % 3 = 00

Rule of Thumb: if you can’t remember the precedence order of the operations, use lots of parentheses.

Page 19: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 19

Precedence Order Example: int #1

#include <stdio.h>

int main (){ /* main */ printf("1 - 2 - 3 = %d\n", 1 - 2 - 3); printf("1 - (2 - 3) = %d\n", 1 - (2 - 3)); printf("\n"); printf(" 1 + 2 * 3 + 4 = %d\n", 1 + 2 * 3 + 4); printf("(1 + 2) * 3 + 4 = %d\n", (1 + 2) * 3 + 4); printf("\n"); printf("24 / 2 * 4 = %d\n", 24 / 2 * 4); printf("24 / (2 * 4) = %d\n", 24 / (2 * 4)); printf("\n"); printf(" 5 + 4 % 6 / 2 = %d\n", 5 + 4 % 6 / 2); printf(" 5 + 4 % (6 / 2) = %d\n", 5 + 4 % (6 / 2)); printf("(5 + 4) % (6 / 2) = %d\n", (5 + 4) % (6 / 2));} /* main */

Notice that a printf statement can output the value of an expression.

Page 20: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 20

Precedence Order Example: int #2% gcc -o intexprs intexprs.c% intexprs1 - 2 – 3 = -41 - (2 - 3) = 2 1 + 2 * 3 + 4 = 11(1 + 2) * 3 + 4 = 1324 / 2 * 4 = 4824 / (2 * 4) = 3 5 + 4 % 6 / 2 = 7 5 + 4 % (6 / 2) = 6(5 + 4) % (6 / 2) = 0

Page 21: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 21

Precedence Order Example: float #1#include <stdio.h>

int main (){ /* main */ printf("1.0 - 2.0 - 3.0 = %f\n", 1.0 - 2.0 - 3.0); printf("1.0 - (2.0 - 3.0) = %f\n", 1.0 - (2.0 - 3.0)); printf("\n"); printf(" 1.0 + 2.0 * 3.0 + 4.0 = %f\n", 1.0 + 2.0 * 3.0 + 4.0); printf("(1.0 + 2.0) * 3.0 + 4.0 = %f\n", (1.0 + 2.0) * 3.0 + 4.0); printf("\n"); printf("24.0 / 2.0 * 4.0 = %f\n", 24.0 / 2.0 * 4.0); printf("24.0 / (2.0 * 4.0) = %f\n", 24.0 / (2.0 * 4.0));} /* main */

Again, notice that a printf statement can output the value of an expression.

Page 22: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 22

Precedence Order Example: float #2

% gcc -o realexprs realexprs.c% realexprs1.0 - 2.0 - 3.0 = -4.0000001.0 - (2.0 - 3.0) = 2.000000 1.0 + 2.0 * 3.0 + 4.0 = 11.000000(1.0 + 2.0) * 3.0 + 4.0 = 13.00000024.0 / 2.0 * 4.0 = 48.00000024.0 / (2.0 * 4.0) = 3.000000

Page 23: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 23

Named Constant & Variable Operands #1

So far, many of the examples of expressions that we’ve looked at have used numeric literal constants as operands.

But of course we already know that using numeric literal constants in the body of a program is BAD BAD BAD.

So instead, we want to use named constants and variables as operands.

Page 24: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 24

Named Constant & Variable Operands #2#include <stdio.h>

int main (){ /* main */ const int days_in_a_year = 365; const int hours_in_a_day = 24; const int minutes_in_an_hour = 60; const int seconds_in_a_minute = 60; int year_of_birth, current_year, age_in_seconds;

printf("Let me guess your age in seconds!\n"); printf("What year were you born?\n"); scanf("%d", &year_of_birth); printf("What year is this?\n"); scanf("%d", &current_year); age_in_seconds = (current_year - year_of_birth) * days_in_a_year * hours_in_a_day * minutes_in_an_hour * seconds_in_a_minute); printf("I’d guess that your age is about"); printf(" %d seconds.\n", age_in_seconds);} /* main */

Page 25: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 25

Named Constant & Variable Operands #2

% gcc -o age age.c

% age

Let me guess your age in seconds!

What year were you born?

1946

What year is this?

2003

I’d guess that your age is about 1797552000 seconds.

Page 26: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 26

Constant-Valued Expressions #1

If we have an expression whose terms are all constants (either literal constants or named constants), then we can use that expression in the initialization of a named constant:

const float C_to_F_factor = 9.0 / 5.0;

const float C_to_F_increase = 32.0;

const float C_water_boiling_temperature = 100.0;

const float F_water_boiling_temperature =

C_water_boiling_temperature *

C_to_F_factor + C_to_F_increase;

Page 27: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 27

Constant-Valued Expressions #2#include <stdio.h>

int main (){ /* main */ const float C_to_F_factor = 9.0 /

5.0; const float C_to_F_increase = 32.0; const float C_water_boiling_temperature = 100.0; const float F_water_boiling_temperature = C_water_boiling_temperature * C_to_F_factor + C_to_F_increase;

printf("Water boils at %f degrees C,\n", C_water_boiling_temperature); printf(" which is %f degrees F.\n", F_water_boiling_temperature);} /* main */

Page 28: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 28

Constant-Valued Expressions #3

% gcc -o constexpr constexpr.c

% constexpr

Water boils at 100.000000 degrees C,

which is 212.000000 degrees F.

Note: in the initialization of a named constant, we CANNOT have an expression whose value is NOT a constant.

Page 29: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 29

Assignments W/O Expressions: Not Very Useful

So far, many of the assignment statements that we’ve seen have simply assigned a literal value to a variable:

% cat varassn.c#include <stdio.h>

int main (){ /* main */ int x; x = 5; printf("x = %d\n", x);} /* main */% gcc -o varassn varassn.c% varassnx = 5

Unfortunately, this is not very interesting and won’t accomplish much in an actual real life program.

To make a program useful, most of the assignments have to have expressions on the right hand side.

Page 30: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 30

Assignments with Expressions: Crucial% cat triangarea.c#include <stdio.h>

int main (){ /* main */ const float height_factor = 0.5; float base, height, area;

printf("This program calculates the area of a\n"); printf(" triangle from its base and height.\n"); printf("What are the base and height?\n"); scanf("%f %f", &base, &height); area = height_factor * base * height; printf("The area of a triangle of base %f\n", base); printf(" and height %f is %f.\n", height, area);} /* main */% gcc -o triangarea triangarea.c% triangareaThis program calculates the area of atriangle from its base and height.What are the base and height?5 7The area of a triangle of base 5.000000and height 7.000000 is 17.500000.

Page 31: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 31

Meaning of Assignment w/Expression

Suppose that we have an expression on the right hand side of an assignment:

x = y + 1;The compiler interprets this statement to mean: “first, evaluate the expression that’s on the right

hand side of the equals sign; then, put the resulting value into the variable

that’s on the left side of the equals sign.”In the example above, the assignment statement

means:“evaluate y + 1, then put the resulting value into x.”

Page 32: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 32

Assignment w/Expression Example% cat xgetsyplus1.c#include <stdio.h>

int main (){ /* main */ int x, y;

y = 5; printf("y = %d\n", y); x = y + 1; printf("x = %d\n", x);} /* main */% gcc -o xgetsyplus1 xgetsyplus1.c% xgetsyplus1y = 5x = 6

Page 33: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 33

Assignment w/Same Variable on Both Sides

Here’s another assignment:

x = x + 1;

The assignment statement above may be confusing, because it has the same variable, x, on both the left hand side and the right hand side of the equals sign.

Page 34: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 34

Same Variable on Both Sides: Meaning

x = x + 1;

In general, the compiler interprets the assignment statement to mean:

“first, evaluate the expression that’s on the right hand side of the equals sign;

then, put the resulting value into the variable that’s on the left hand side of the equals sign.”

So, the assignment statement above means:

“get the current value of x, then add 1 to it, then place the new value back into x.”

Page 35: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 35

Same Variable on Both Sides: Example% cat assignself.c#include <stdio.h>

int main (){ /* main */ int x;

x = 5; printf("After 1st assignment, x = %d\n", x); x = x + 1; printf("After 2nd assignment, x = %d\n", x);} /* main */% gcc -o assignself assignself.c% assignselfAfter 1st assignment, x = 5After 2nd assignment, x = 6

Page 36: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 36

Single Mode Arithmetic

In C, when we have an arithmetic expression whose terms all evaluate to a single data type (e.g., all int-valued terms or all float-valued terms), we call this single mode arithmetic.

In C, single mode int arithmetic behaves like single mode float arithmetic most of the time.

Page 37: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 37

int vs float Arithmetic

In C, single mode int arithmetic behaves like single mode float arithmetic most of the time.

5.0 + 7.0 is 12.0 and

5 + 7 is 12

5.0 - 7.0 is -2.0 and

5 - 7 is -2

5.0 * 7.0 is 35.0 and

5 * 7 is 35But, division is different for int vs float!

Page 38: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 38

int vs float Division

Division is different for int vs float!5.0 / 7.0 is 0.71 BUT

5 / 7 is 0

float division in C works the same way that division works in mathematics. But int division is a little bit strange.

In int division, the result is truncated to the nearest int immediately less than the mathematical result.

Page 39: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 39

int Division Truncates

4.0 / 4.0 is 1.0 and

4 / 4 is 1

5.0 / 4.0 is 1.25 BUT

5 / 4 is 1

6.0 / 4.0 is 1.5 BUT

6 / 4 is 1

7.0 / 4.0 is 1.75 BUT

7 / 4 is 1

8.0 / 4.0 is 2.0 and

8 / 4 is 2

Page 40: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 40

Division By Zero

Mathematically, division by zero gives an infinite result:

c – = ∞ for c ≠ 0 0

Computationally, division by zero causes an error.

Page 41: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 41

Division By Zero Example #1

% cat divbyzeroconst.c#include <stdio.h>int main (){ /* main */ printf("5 / 0 = %d\n", 5 / 0);} /* main */% gcc -o divbyzeroconst divbyzeroconst.c% divbyzeroconstFloating exception (core dumped)

Page 42: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 42

Division By Zero Example #2% cat divbyzero.c#include <stdio.h>

int main (){ /* main */ int numerator, denominator;

printf("What’s the numerator?\n"); scanf("%d", &numerator); printf("What’s the denominator?\n"); scanf("%d", &denominator); printf("numerator = %d\n", numerator); printf("denominator = %d\n", denominator); printf("numerator / denominator = %d\n", numerator / denominator);} /* main */% gcc -o divbyzero divbyzero.c% divbyzeroWhat’s the numerator?5What’s the denominator?0numerator = 5denominator = 0Floating exception (core dumped)

Page 43: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 43

Floating Point Exception% gcc -o divbyzero divbyzero.c% divbyzeroWhat’s the numerator?5What’s the denominator?0numerator = 5denominator = 0Floating exception (core dumped)

Note that, in the context of computing, the word exception means “a very dumb thing to do.”

As in, “I take exception to that.”

Page 44: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 44

Mixed Mode Arithmetic #1

In principle, we might like our numeric statements to have either all int-valued terms or all float-valued terms.

In practice, we can, and often must, mix int-valued and float-valued terms – literals, named constants, variables and subexpressions – subject to the rule that an operation with operands of both data types has a float result.

We call such expressions mixed mode arithmetic.

Page 45: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 45

Mixed Mode Arithmetic #2

1 + 2 is 3 BUT

1.0 + 2 is 3.0 and

1 + 2.0 is 3.0

1 - 2 is -1 BUT

1.0 - 2 is -1.0 and

1 - 2.0 is -1.0

1 * 2 is 2 BUT

1.0 * 2 is 2.0 and

1 * 2.0 is 2.0

1 / 2 is 0 BUT

1.0 / 2 is 0.5 and

1 / 2.0 is 0.5

Page 46: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 46

Promoting an int to a float

For mixed mode arithmetic, we say that an int operand is promoted to float.

1 / 2 is 0 BUT

1 / 2.0 is

1.0 / 2.0 is 0.5

4.0 / (3 / 2) is 4.0 BUT

4.0 / (3.0 / 2) is

4.0 / (3.0 / 2.0) is 2.666…

Page 47: Arithmetic Expressions Outline

CS1313: Numeric Data Types LessonFall 2004 47

Exercise: Writing a Program

Given a height in miles, convert to height in meters.Specifically, draw a flowchart and then write a C

program that:1. greets the user;2. prompts the user and then inputs a height in

miles;3. calculates the height in meters;4. outputs the height in meters.The body of the program must not have any numeric

literal constants; all constants must be declared using appropriate identifiers.

Don’t worry about comments.