Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object-Oriented Programming Using C++ Third Edition Chapter 2 Evaluating C++ Expressions.

Similar presentations


Presentation on theme: "Object-Oriented Programming Using C++ Third Edition Chapter 2 Evaluating C++ Expressions."— Presentation transcript:

1 Object-Oriented Programming Using C++ Third Edition Chapter 2 Evaluating C++ Expressions

2 Object-Oriented Programming Using C++, Third Edition2 Objectives Use C++ binary arithmetic operators Learn about the precedence and associativity of arithmetic operations Examine shortcut arithmetic operators Use other unary operators Evaluate Boolean expressions Perform operations on struct fields

3 Object-Oriented Programming Using C++, Third Edition3 Using C++ Binary Arithmetic Operators Five simple arithmetic operators: – the addition operator (+) – the subtraction operator (–) – the multiplication operator (*) – the division operator (/) – the modulus operator (%) Note that they are all binary operators

4 Object-Oriented Programming Using C++, Third Edition4 Using C++ Binary Arithmetic Operators (continued)

5 Object-Oriented Programming Using C++, Third Edition5 Using C++ Binary Arithmetic Operators (continued) Addition, subtraction, multiplication, division, or modulus of any two integers results in an integer –For example, 7 / 3 evaluates to 3 Mixed expression: operands have different data types –For example, 3.2 * 2 Unifying type: –Data type of the value that occupies more memory –All types in the expression are temporarily converted to a unifying type

6 Object-Oriented Programming Using C++, Third Edition6 Using C++ Binary Arithmetic Operators (continued) The order of precedence of unifying types from highest to lowest –long double –double –float –unsigned long –long –unsigned int –int –short –char

7 Object-Oriented Programming Using C++, Third Edition7 Explicit cast

8 Object-Oriented Programming Using C++, Third Edition8

9 9 Using C++ Binary Arithmetic Operators (continued) Cast: transform a value to another data type Implicit cast: automatic cast, or transformation, that occurs when you assign a value of one type to a type with higher precedence –int answer = 2.0 * 7 Explicit cast: deliberate cast –intResult = static_cast (doubleVariable); –intResult = (int)doubleVariable; static_cast ('A') // is 65 Preferred method in C++

10 Object-Oriented Programming Using C++, Third Edition10 Using Modulus Modulus (%) gives the remainder of integer division –7 % 3 results in 1 –-10 % 8 produces -2 –-10 % -8 produces -2 Can be used only with integers Can be used to extract digits from numbers –6,543 % 10 is 3 –6,789 % 10 is 9

11 Object-Oriented Programming Using C++, Third Edition11 Using Modulus (continued) Check digit: digit added to a number that validates the authenticity of the number A simple algorithm: 1.Assume an account number named acctNum is 123454 2.Remove the last digit 3.Perform modulus on the new number with an arbitrary value, say 7 ( remainder = shortAcctNum % 7 ) 4.Compare the last digit of the original account number ( lastDigit = acctNum % 10 ) with the remainder from the check digit calculation

12 Object-Oriented Programming Using C++, Third Edition12 Precedence and Associativity of Arithmetic Operators Multiplication, division, and modulus are said to have higher arithmetic precedence–that is, they are performed first in an arithmetic statement with multiple operations Associativity: rule that dictates the order in which an operator works with its operands –In C++, most operators have left-to-right associativity

13 Object-Oriented Programming Using C++, Third Edition13 Precedence and Associativity of Arithmetic Operators (continued) When C++ evaluates a mixed arithmetic expression, the following steps occur: 1.The leftmost operation with the highest precedence is evaluated a)If operands are the same type, the result is the same data type b)If the operands are different types, C++ performs an implicit cast and the result is the same type as the one that occupies more memory 2.Each subsequent *, /, or % operation is evaluated in the same manner from left to right

14 Object-Oriented Programming Using C++, Third Edition14 Precedence and Associativity of Arithmetic Operators (continued) Steps (continued): 3.The leftmost operation with the lower precedence (+ and –) is evaluated a)If operands are the same type, the result is the same type b)If operands are different types, C++ performs an implicit cast and the result is the same type as the one that occupies more memory 4.Each subsequent + or – operation is evaluated in the same manner from left to right Use parentheses to override precedence rules

15 Object-Oriented Programming Using C++, Third Edition15 Precedence and Associativity of Arithmetic Operators (continued)

16 Object-Oriented Programming Using C++, Third Edition16 Shortcut Arithmetic Operators Two categories of shortcut arithmetic operators are: –Compound assignment operators –Increment and decrement operators

17 Object-Oriented Programming Using C++, Third Edition17 Compound Assignment Operators Add and assign operator (+=) Subtract and assign operator (– =) Multiply and assign operator (*=) Divide and assign operator (/=) Modulus and assign operator (%=)

18 Object-Oriented Programming Using C++, Third Edition18 Increment and Decrement Operators Prefix increment operator ++count Postfix increment operator count++ Prefix decrement operator --count Postfix decrement operator count--

19 Object-Oriented Programming Using C++, Third Edition19 Using Shortcut Arithmetic Operators

20 Object-Oriented Programming Using C++, Third Edition20 Other Unary Operators Positive value operator +5 Negative value operator -8 Address operator (&) &x

21 Object-Oriented Programming Using C++, Third Edition21 Hexadecimal number Other Unary Operators

22 Object-Oriented Programming Using C++, Third Edition22 Evaluating Boolean Expressions Relational operators: evaluate the relationship between operands –Used to evaluate Boolean expressions Boolean expression: interpreted as true or false

23 Object-Oriented Programming Using C++, Third Edition23 Evaluating Boolean Expressions (continued) The unary operator ! is the not operator: reverses the true/false value of an expression –cout 2); displays a 1 –cout 2); displays a 0 –!0 is 1 –!1 is 0 –!5 is 0 –!-5 is 0 Don’t confuse = with ==

24 Object-Oriented Programming Using C++, Third Edition24 Performing Operations on struct Fields

25 Object-Oriented Programming Using C++, Third Edition25 Performing Operations on struct Fields (continued)

26 Object-Oriented Programming Using C++, Third Edition26 You Do It: Using Arithmetic Operators int a,b,c; double x,y,z; a = 13; b = 4; x = 3.3; y = 15.78; c = a + b; cout<<“a + b is ”<<c<<endl; z = x + y; cout <<“x + y is ”<<z<<endl; c = a / b; cout<<“a / b is ”<<c<<endl; c = a % b; cout<<“a% b is “<<c<<endl;

27 Object-Oriented Programming Using C++, Third Edition27 You Do It: Using Arithmetic Operators (continued)

28 Object-Oriented Programming Using C++, Third Edition28 Using Prefix and Postfix Increment and Decrement Operators a = 2; c = ++a; cout<<“a is ”<<a<<“ and c is ”<<c<<endl; a = 2; c = a++; cout<<“a is ”<<a<<“ and c is ”<<c<<endl;

29 Object-Oriented Programming Using C++, Third Edition29 Using Prefix and Postfix Increment and Decrement Operators (continued)

30 Object-Oriented Programming Using C++, Third Edition30 Using Operators with struct Fields cout<<“Please enter a student's credit hours ”; cin>>oneSophomore.creditHours; cout<<“Please enter the student's grade point average ”; cin>>oneSophomore.gradePointAverage; cout<<“The number of credit hours is ” << oneSophomore.creditHours<<endl; cout<<“The grade point average is ”<< oneSophomore.gradePointAverage<<endl; hoursRemaining = HOURS_REQUIRED_TO_GRADUATE oneSophomore.creditHours; cout<<“This student needs ”<<hoursRemaining<< “ more credit hours to graduate”<<endl;

31 Object-Oriented Programming Using C++, Third Edition31 Using Operators with struct Fields (continued)

32 Object-Oriented Programming Using C++, Third Edition32 Summary There are five simple binary arithmetic operators: addition (+), subtraction (–), multiplication (*), division (/), and modulus (%) When you mix data types in a binary arithmetic expression, the result is always the same type as the type that takes the most memory to store Several shortcut operators for arithmetic exist, such as +=, prefix ++, and postfix ++

33 Object-Oriented Programming Using C++, Third Edition33 Summary (continued) Boolean expression evaluates as true or false –In C++, the value 0 is always interpreted as false; all other values are interpreted as true Fields contained within structures are used in arithmetic and Boolean expressions in the same manner as are primitive variables


Download ppt "Object-Oriented Programming Using C++ Third Edition Chapter 2 Evaluating C++ Expressions."

Similar presentations


Ads by Google