1
Numeric Types,Expressions,
and Output
2
Chapter 3 Topics
Constants of Type int and float
Evaluating Arithmetic Expressions
Declaration for Numeric Types
Implicit Type Coercion and Explicit Type Conversion
Calling a Value-Returning Function
Using Function Arguments
Using C++ Library Functions in Expressions
Calling a Void Function
C++ Manipulators to Format Output
String Operations length,size,find,substr
3
C++ Data Types
structured
array struct union class
address
pointer reference
simple
integral enum
char short int long bool
floating
float double long double
4
C++ Simple Data Types
simple types
integral floating
char short int long bool enum float double long double
unsigned
5
Standard Data Types in C++
Integral Types
represent whole numbers and their negatives
declared as int,short,or long
Floating Types
represent real numbers with a decimal point
declared as float,or double
Character Type
represents single characters
declared as char
6
Samples of C++ Data Values
int sample values
4578 -4578 0
float sample values
95.274 95.,265
9521E-3 -95E-1 95.213E2
char sample values
Bd4*?
7
Integral Types
The data types char,short,int,and long are intended
to represent different sizes of integers.
The sizes are machine dependent.
For one particular machine,we might picture the sizes
this way.
char memory cell
short memory cell
int memory cell
long memory cell
8
Integral Types( Cont.)
We can also explicitly add the reserved
word unsigned to the data type name:
unsigned int
The unsigned integer value is assumed to
be only positive or zero.
9
Scientific Notation
2.7E4 means 2.7 x 10 4 =
2.7000 =
27000.0
2.7E-4 means 2.7 x 10 - 4 =
0002.7 =
0.00027
10
More About Floating Point
Values
floating point numbers have an integer part and a
fractional part,with a decimal point in between,
Either the integer part or the fractional part,but not
both,may be missing
EXAMPLES 18.4 500.,8 -127.358
alternatively,floating point values can have an
exponent,as in scientific notation--the number
preceding the letter E doesn’t need to include a
decimal point
EXAMPLES 1.84E1 5E2 8E-1 -.127358E3
11
Division Operator
the result of the division operator depends on the
type of its operands
if one or both operands has a floating point type,the
result is a floating point type,Otherwise,the result
is an integer type
Examples
11 / 4 has value 2
11.0 / 4.0 has value 2.75
11 / 4.0 has value 2.75
12
Main returns an int value to
the operating system
//***************************************************************************
// FreezeBoil program
// This program computes the midpoint between
// the freezing and boiling points of water
//***************************************************************************
#include < iostream >
using namespace std;
const float FREEZE_PT = 32.0 ; // Freezing point of water
const float BOIL_PT = 212.0 ; // Boiling point of water
int main ( )
{
float avgTemp ; // Holds the result of averaging
// FREEZE_PT and BOIL_PT
13
Function main (Cont.)
cout <<,Water freezes at,<< FREEZE_PT << endl ;
cout <<,and boils at,<< BOIL_PT <<,degrees.” << endl ;
avgTemp = FREEZE_PT + BOIL_PT ;
avgTemp = avgTemp / 2.0 ;
cout <<,Halfway between is,;
cout << avgTemp <<,degrees.” << endl ;
return 0 ;
}
14
Modulus Operator
the modulus operator % can only be used
with integer type operands and always has an
integer type result
its result is the integer type remainder of an
integer division
EXAMPLE
11 % 4 has value 3 because
)4 11
R =?
15
More C++ Operators
8
int age;
age = 8;
age = age + 1;
age
9
age
16
PREFIX FORM
Increment Operator
8
int age;
age = 8;
++age;
age
9
age
17
POSTFIX FORM
Increment Operator
8
int age;
age = 8;
age++;
age
9
age
18
Decrement Operator
100
int dogs;
dogs = 100;
dogs--;
dogs
99
dogs
19
Which Form to Use?
when the increment (or decrement)
operator is used in a,stand alone”
statement solely to add one (or subtract
one) from a variable?s value,it can be
used in either prefix or postfix form
dogs-- ; --dogs ;
USE EITHER
20
BUT...
when the increment (or decrement)
operator is used in a statement with
other operators,the prefix and postfix
forms can yield different results
WE?LL SEE HOW LATER,,,(In Chapter 10)
21
What is an Expression in C++?
An expression is a valid arrangement
of variables,constants,and operators,
in C++ each expression can be
evaluated to compute a value of a
given type
the value of the expression
9.3 * 4.5 is 41.85
22
Operators can be
unary involving 1 operand - 3
binary involving 2 operands 2 + 3
ternary involving 3 operands later
23
Some C++ Operators
Precedence Operator Description
Higher ( ) Function call
+ Positive
- Negative
* Multiplication
/ Division
% Modulus (remainder)
+ Addition
- Subtraction
Lower = Assignment
24
Precedence
higher Precedence determines which
operator is applied first in an
expression having several operators
25
Associativity
left to right Associativity means that in an
expression having 2 operators with the same
priority,the left operator is applied first
in C++ the binary operators
*,/,%,+,- are all left associative
expression 9 - 5 - 1 means ( 9 - 5 ) – 1=4-1=3
doesn’t mean 9 - ( 5 - 1) = 9 – 4 = 5
26
7 * 10 - 5 % 3 * 4 + 9
means (7 * 10) - 5 % 3 * 4 + 9
70 - 5 % 3 * 4 + 9
70 - (5 % 3) * 4 + 9
70 - 2 * 4 + 9
70 - ( 2 * 4 ) + 9
70 - 8 + 9
( 70 - 8 ) + 9
62 + 9
71
Evaluate the Expression
27
Parentheses
parentheses can be used to change the
usual order
parts in ( ) are evaluated first
evaluate (7 * (10 - 5) % 3) * 4 + 9
( 7 * 5 % 3 ) * 4 + 9
( 35 % 3 ) * 4 + 9
2 * 4 + 9
8 + 9
17
28
Mileage Program
/* This program computes miles per gallon given four amounts
for gallons used,and starting and ending mileage,
Constants,The gallon amounts for four fillups.
The starting mileage.
The ending mileage.
Output (screen) The calculated miles per gallon.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
#include <iostream>
using namespace std;
29
C++ Code Continued
const float AMT1 = 11.7 ; // Number of gallons for fillup 1
const float AMT2 = 14.3 ; // Number of gallons for fillup 2
const float AMT3 = 12.2 ; // Number of gallons for fillup 3
const float AMT4 = 8.5 ; // Number of gallons for fillup 4
const float START_MILES = 67308.0 ; // Starting mileage
const float END_MILES = 68750.5 ; // Ending mileage
int main( )
{
float mpg ; // Computed miles per gallon
mpg = (END_MILES - START_MILES) /
(AMT1 + AMT2 + AMT3 + AMT4) ;
30
Main returns an int value to
the operating system
cout <<,For the gallon amounts,<< endl ;
cout << AMT1 << ‘ ‘ << AMT2 << ‘ ‘
<< AMT3 << ‘ ‘ << AMT4 << endl ;
cout <<,and a starting mileage of,
<< START_MILES << endl ;
cout <<,and an ending mileage of,
<< END_MILES << endl ;
cout <<,the mileage per gallon is,<< mpg << endl ;
return 0;
}
31
Declarations for Numeric Types
Named Constant Declarations
const float PI=3.14159;
const float E=2.71828;
const int MAX_SCORE=100;
const int MIN_SCORE= -100;
const char LETTER=?W?;
const string NAME=“Elizabeth”;
Constant Declaration
32
Declarations for Numeric Types (Cont.)
Given the declaration
int num;
int alpha;
float rate;
char ch;
The following are appropriate
assignment statement:
Variable Expression
alpha= 2856;
rate= 0.36;
ch=?B’ ;
num= alpha;
Variable Declaration
In each of these assignment statements,the data
type of the expression matches the data type of
the variable to which it is assigned.
33
Variable = Expression
first,Expression on right is evaluated
then the resulting value is stored in the
memory location of Variable on left
NOTE,An automatic type coercion occurs after
evaluation but before the value is stored if the
types differ for Expression and Variable
Assignment Operator Syntax
34
What value is stored?
float a;
float b;
a = 8.5;
b = 9.37;
a = b;
a
b
a
b
8.5
9.37
35
What is stored?
float someFloat;
someFloat
someFloat = 12; // causes implicit type conversion
someFloat
12.0
36
What is stored?
int someInt;
someInt
someInt = 4.8; // causes implicit type conversion
someInt
4
37
Type Casting is Explicit
Conversion of Type
int(4.8) has value 4
float(5) has value 5.0
float(7/4) has value 1.0
float(7) / float(4) has value 1.75
38
Some Expressions
int age;
EXAMPLE VALUE
age = 8 8
- age - 8
5 + 8 13
5 / 8 0
6.0 / 5.0 1.2
float ( 4 / 8 ) 0.0
float ( 4 ) / 8 0.5
cout <<,How old are you?” cout
cin >> age cin
cout << age cout
39
What values are stored?
float loCost;
float hiCost;
loCost = 12.342;
hiCost = 12.348;
loCost = float (int (loCost * 100.0 + 0.5) ) / 100.0;
hiCost = float (int (hiCost * 100.0 + 0.5) ) / 100.0;
40
Values were rounded to 2
decimal places
12.34
hiCost
12.35
loCost
41
Function Concept in Math
f ( x ) = 5 x - 3
When x = 1,f ( x ) = 2 is the returned value.
When x = 4,f ( x ) = 17 is the returned value.
Returned value is determined by the function
definition and by the values of any parameters.
Name of function
Parameter of function
Function definition
42
Functions
every C program must have a function
called main
program execution always begins with
function main
any other functions are subprograms
and must be called
43
Function Calls
one function calls another by using the
name of the called function together with
( ) containing an argument list
a function call temporarily transfers
control from the calling function to the
called function
44
What is in a block?
{
0 or more statements
here
}
45
Every C++ function has 2 parts
int main ( ) heading
{
body block
return 0;
}
46
Shortest C++ Program
int main ( )
{
return 0;
}
type of returned value name of function
47
What is in a heading?
int main ( )
type of returned value name of function says no parameters
48
More About Functions
it is not considered good practice for the body
block of function main to be long
function calls are used to do tasks
every C++ function has a return type
if the return type is not void,the function returns a
value to the calling block
49
Where are functions?
located in libraries
OR
written by programmers
50
HEADER FILE FUNCTION EXAMPLE VALUE
OF CALL
fabs(x) fabs(-6.4) 6.4
<cmath> pow(x,y) pow(2.0,3.0) 8.0
<cmath> sqrt(x) sqrt(100.0) 10.0
<iomanip> setprecision(n) setprecision(3)
<cmath> log(x) log(2.0),693147
sqrt(x) sqrt(2.0) 1.41421
<cstdlib> abs(i) abs(-6) 6
51
Write C++ Expressions for
The square root of b2 - 4ac
sqrt ( b * b - 4.0 * a * c )
The square root of the average of myAge
and yourAge
sqrt ( ( myAge + yourAge ) / 2 )
52
Program with Several Functions
Main function
Square function
Cube function
53
Program with Three Functions
#include <iostream>
int Square( int ); // declares these functions
int Cube( int );
using namespace std ;
int main( )
{
cout <<,The square of 27 is,
<< Square(27) << endl; // function call
cout <<,The cube of 27 is,
<< Cube(27) << endl; // function call
return 0;
}
54
Rest of Program
int Square( int n ) // header and body here
{
return n * n;
}
int Cube( int n ) // header and body here
{
return n * n * n;
}
55
Function Call
a function call temporarily transfers
control to the called function’s code
when the function’s code has
finished executing,control is
transferred back to the calling block
56
FunctionName ( Argument List )
The argument list is a way for functions to
communicate with each other by passing
information.
The argument list can contain 0,1,or more
arguments,separated by commas,depending
on the function.
Function Call Syntax
57
A void function call stands alone
#include <iostream>
void DisplayMessage ( int n ) ; // declares function
int main( )
{
DisplayMessage( 15 ) ; //function call
cout <<,Good Bye,<< endl ;
return 0 ;
}
58
A void function does NOT
return a value
// header and body here
void DisplayMessage ( int n )
{
cout <<,I have liked math for,
<< n <<,years” << endl ;
}
Two Kinds of Functions
Always returns
a single value to
its caller and is
called from within
an expression.
Never returns a
value to its caller,
and is called as a
separate
statement.
Value-Returning Void
60
<< is a binary operator
<< is called the output or insertion operator
<< is left associative
EXPRESSION HAS VALUE
cout << age cout
STATEMENT
cout <<,You are,<< age <<,years old\n” ;
61
<iostream> is header file
for a library that defines 3 objects
an istream object named cin (keyboard)
an ostream object named cout (screen)
an ostream object named cerr (screen)
62
No I/O is built into C++
instead,a library provides input stream and
output stream
Keyboard Screenexecuting
program
istream ostream
63
Manipulators
manipulators are used only in input and
output statements
endl,fixed,showpoint,setw,and
setprecision are manipulators that can be
used to control output format
endl is use to terminate the current output
line,and create blank lines in output
64
Insertion Operator ( << )
the insertion operator << takes 2
operands
the left operand is a stream expression,
such as cout
the right operand is an expression of
simple type,or a string,or a manipulator
65
Output Statements
SYNTAX (revised)
cout << Expression Or Manipulator
<< Expression Or Manipulator,,,;
66
Output Statements (Cont.)
SYNTAX
These examples yield the same output.
cout <<,The answer is” ;
cout << 3 * 4 ;
cout <<,The answer is,<< 3 * 4 ;
cout << Expression << Expression,,,;
67
Using Manipulators
Fixed and Showpoint
use the following statement to specify that
(for output sent to the cout stream) decimal
format (not scientific notation) be used,and
that a decimal point be included (even for
floating values with 0 as fractional part)
cout << fixed << showpoint ;
68
Setprecision(n)
requires #include <iomanip> and appears in
an expression using insertion operator (<<)
if fixed has already been specified,argument
n determines the number of places displayed
after the decimal point for floating point
values
Setprecision remains in effect until explicitly
changed by another call to setprecision.
69
What is exact output?
#include <iomanip> // for setprecision( )
#include <iostream>
using namespace std;
int main ( )
{
float myNumber = 123.4587 ;
cout << fixed << showpoint ; // use decimal format
// print decimal points
cout <<,Number is,<< setprecision ( 3 )
<< myNumber << endl ;
return 0 ;
}
70
OUTPUT
Number is 123.459
value is rounded if necessary to be displayed
with exactly 3 places after the decimal point
71
Manipulator setw
,set width” lets us control how many
character positions the next data item
should occupy when it is output
setw is only for formatting numbers and
strings,not char type data
72
Setw(n)
requires #include <iomanip> and appears in an
expression using insertion operator (<<)
argument n is called the fieldwidth specification,
and determines the number of character positions
in which to display a right-justified number or
string (not char data),The number of positions
used is expanded if n is too narrow
“set width” affects only the very next item
displayed,and is useful to align columns of
output
73
What is exact output?
#include <iomanip> // for setw( )
#include <iostream>
#include <string>
using namespace std;
int main ( )
{
int myNumber = 123 ;
int yourNumber = 5 ;
cout << setw ( 10 ) <<,Mine”
<< setw ( 10 ) <<,Yours” << endl;
cout << setw ( 10 ) << myNumber
<< setw ( 10 ) << yourNumber << endl ;
return 0 ;
}
74
OUTPUT
each is displayed right-justified and
each is located in a total of 10 positions
12345678901234567890
Mine Yours
123 5
position
75
What is exact output?
#include <iomanip> // for setw( ) and setprecision( )
#include <iostream>
using namespace std;
int main ( )
{
float myNumber = 123.4 ;
float yourNumber = 3.14159 ;
cout << fixed << showpoint ; // use decimal format
// print decimal points
cout <<,Numbers are:,<< setprecision ( 4 ) << endl
<< setw ( 10 ) << myNumber << endl
<< setw ( 10 ) << yourNumber << endl ;
return 0 ;
}
76
OUTPUT
each is displayed right-justified and rounded
if necessary and each is located in a total of 10
positions with 4 places after the decimal point
Numbers are,
123.4000
3.1416
12345678901234567890
77
float x = 312.0 ;
float y = 4.827 ;
cout << fixed << showpoint ; OUTPUT
cout << setprecision ( 2 )
<< setw ( 10 ) << x << endl3 1 2.00
<< setw ( 10 ) << y << endl ; 4.83
cout << setprecision ( 1 )
<< setw ( 10 ) << x << endl3 1 2.0
<< setw ( 10 ) << y << endl ; 4.8
cout << setprecision ( 5 )
<< setw ( 7 ) << x << endl 3 1 2.00000
<< setw ( 7 ) << y << endl ; 4.82700
More Examples
x
312.0
y
4.827
78
HEADER MANIPULATOR ARGUMENT EFFECT
FILE TYPE
<iostream> showpoint none displays decimal point
<iostream> fixed none suppresses scientific notation
<iomanip> setprecision(n) int sets precision to n digits
<iomanip> setw(n) int sets fieldwidth to n positions
<iostream> endl none terminates output line
79
Additional string Operations
The length and size Functions
function lengthreturns an unsigned
integer value that equals the number of
characters currently in the string
function size returns the same value as
function length
you must use dot notation in the call to
function length or size
80
Additional string Operations (Cont.)
The find Function
function find returns an unsigned integer value
that is the beginning position for the first
occurrence of a particular substring within the
string
the substring argument can be a string
constant,a string expression,or a char value
if the substring was not found,function find
returns the special value string::npos
81
Additional string Operations (Cont.)
The substr Function
function substr returns a particular substring
of a string
the first argument is an unsigned integer that
specifies a starting position within the string
the second argument is an unsigned integer that
specifies the length of the desired substring
positions of characters within a string are
numbered starting from 0,not from 1
82
What is exact output?
#include <iostream>
#include <string> // for functions length,find,substr
using namespace std;
int main ( )
{
string stateName =,Mississippi” ;
cout << stateName.length( ) << endl;
cout << stateName.find(“is”) << endl;
cout << stateName.substr( 0,4 ) << endl;
cout << stateName.substr( 4,2 ) << endl;
cout << stateName.substr( 9,5 ) << endl;
return 0 ;
}
83
What is exact output? (Cont.)
#include <iostream>
#include <string> // for functions length,find,substr
using namespace std;
int main ( )
{
string stateName =,Mississippi” ;
cout << stateName.length( ) << endl; // value 11
cout << stateName.find(“is”) << endl; // value 1
cout << stateName.substr( 0,4 ) << endl; // value,Miss”
cout << stateName.substr( 4,2 ) << endl; // value,is”
cout << stateName.substr( 9,5 ) << endl; // value,pi”
return 0 ;
}
84
Map Measurement Case Study
You want a program to determine
walking distances between 4 sights in the
city,Your city map legend says one inch
on the map equals 1/4 mile in the city,
You use the measured distances
between 4 sights on the map,
Display the walking distances (rounded
to the nearest tenth) between each of the
4 sights.
85
// ***************************************************
// Walk program
// This program computes the mileage (rounded to nearest
// tenth of mile) for each of 4 distances,given map
// measurements on map with scale of 1 in = 0.25 mile
// ***************************************************
#include <iostream> // for cout,endl
#include <iomanip> // For setprecision
using namespace std;
float RoundToNearestTenth( float ); // declare function
const float SCALE = 0.25; // Map scale (mi,per inch)
C++ Program
86
C++ Code Continued
const float DISTANCE1 = 1.5; // First map distance
const float DISTANCE2 = 2.3; // Second map distance
const float DISTANCE3 = 5.9; // Third map distance
const float DISTANCE4 = 4.0; // Fourth map distance
int main( )
{
float totMiles; // Total of rounded miles
float miles; // One rounded mileage
cout << fixed << showpoint // Set output format
<< setprecision(1);
totMiles = 0.0; // Initialize total miles
87
// Compute miles for each distance on map
miles = RoundToNearestTenth( DISTANCE1 * SCALE );
cout << DISTANCE1 <<,inches on map is,
<< miles <<,miles in city.” << endl;
totMiles = totMiles + miles;
miles = RoundToNearestTenth( DISTANCE2 * SCALE );
cout << DISTANCE2 <<,inches on map is,
<< miles <<,miles in city.” << endl;
totMiles = totMiles + miles;
88
// Compute miles for other distances on map
miles = RoundToNearestTenth( DISTANCE3 * SCALE );
cout << DISTANCE3 <<,inches on map is,
<< miles <<,miles in city.” << endl;
totMiles = totMiles + miles;
miles = RoundToNearestTenth( DISTANCE4 * SCALE );
cout << DISTANCE4 <<,inches on map is,
<< miles <<,miles in city.” << endl;
totMiles = totMiles + miles;
89
cout << endl <<,Total walking mileage is,
<< totMiles <<,miles.” << endl;
return 0 ; // Successful completion
}
// ***************************************************
float RoundToNearestTenth ( /* in */ float floatValue)
// Function returns floatValue rounded to nearest tenth.
{
return float(int(floatValue * 10.0 + 0.5)) / 10.0;
}