Types Chapter 2. C++ An Introduction to Computing, 3rd ed. 2 Objectives Observe types provided by...

Post on 18-Jan-2018

219 views 0 download

description

C++ An Introduction to Computing, 3rd ed. 3 Types and Declarations Fundamental Types Integers (whole numbers, negatives) int Integer variations short, long, unsigned Reals (fractional numbers) float, double, long double Characters (letters, digits, symbols, punctuation) char Booleans (logical values, true and false ) bool

Transcript of Types Chapter 2. C++ An Introduction to Computing, 3rd ed. 2 Objectives Observe types provided by...

Types

Chapter 2

C++ An Introduction to Computing, 3rd ed. 2

ObjectivesObserve types provided by C++• Literals of these types

Explain syntax rules for identifier namesStudy variables and constants• What they are• How they differ• How to declare• How to use

Investigate internal representationsFirst look at class attribute variables

C++ An Introduction to Computing, 3rd ed. 3

Types and DeclarationsFundamental Types

Integers (whole numbers, negatives)• int

Integer variations • short, long, unsigned

Reals (fractional numbers)• float, double, long double

Characters (letters, digits, symbols, punctuation)• char

Booleans (logical values, true and false)• bool

C++ An Introduction to Computing, 3rd ed. 4

Integer

Memory used for an int depends on word size used by the hardware• Usually 16, 32, or 64 bits used

16 Bits (2 bytes) – short int• Range -32768 … 32767

32bits (4 bytes) – long int (or long)• Range -2137483648 … 2137483647 (maybe

64)One bit used for the sign

C++ An Introduction to Computing, 3rd ed. 5

Integer

Integers can be specified as unsigned• Then the sign bit not needed• Gives larger positive range

unsigned short (16 bits)• Range 0 … 65535

unsigned long (32 bits)• Range 0 … 4294967295

C++ An Introduction to Computing, 3rd ed. 6

Integer Literals

Decimal integers• Sequence of digits without a decimal point

Octal integers• Sequence of digits beginning with a 0• Base 8

Hexadecimal integers• Sequence of digits beginning with an X• Base 16

C++ An Introduction to Computing, 3rd ed. 7

Reals

float• Usually a 32-bit value (4 bytes)

double• A 64-bit value (8 bytes)

long double • A 96- or 128-bit value

The programmer should choose which type based on degree of precision desired

for the object

C++ An Introduction to Computing, 3rd ed. 8

Reals

Values are stored internally in scientific notation (base 2)

• A sign for the number• Significant digits of the number• The power of 10• Sign for the power

41.23 10

C++ An Introduction to Computing, 3rd ed. 9

Reals

Literal values (real Literals are treated as double)• A sequence of digits with leading sign,

containing a decimal point• Scientific notation – any one of the following

forms0.12e111.2E1012.0E912.e912E9

C++ An Introduction to Computing, 3rd ed. 10

Characters

char typeRepresents individual characters• See ASCII character set in Appendix A

Characters represented in memory by numeric valuesCharacter literals• Characters enclosed in single quotes'X' '7' '>' 'e'

C++ An Introduction to Computing, 3rd ed. 11

Characters

Escape characters• A backslash \ combined with another character hold

special meaning

Character C++ Escape Sequence

Newline \nHorizontal tab \t

Vertical tab \vBackspace \b

Carriage Return \rForm Feed \fAlert (beep) \a

C++ An Introduction to Computing, 3rd ed. 12

Strings

Need #include <string>; using namespace std;A sequence of characters• Enclosed in double quotes

"Hi Mom”• Can include escape characters

"\nThe answer is "Warning•"A" is a string literal•'A' is a character literal

C++ An Introduction to Computing, 3rd ed. 13

Identifiers

Names given to software objectsRules:• Must not be C++ keywords (see Appdx B)int, if, while, …

• Must start with a letter (or the underscore _ )• Followed by numerals, letters, underscore

Recommendation• Use meaningful identifiers• Go for longer names, rather than shorter

C++ An Introduction to Computing, 3rd ed. 14

Identifiers

C++ is case sensitive• firstName is not the same as firstname

Typical usage• Constants are all caps PI• Variables

• Start with lower case• Capitalize first letter of successive words

monthlyElectricCharge

C++ An Introduction to Computing, 3rd ed. 15

Object CategoriesThere are three kinds of objects:Literals: • unnamed objects • having a value • (0, -3, 2.5, 2.998e8, ‘A’, “Hello\n”, ...)

Variables: • named objects• values can change during program execution

Constants: • named objects • values do not change during program execution

C++ An Introduction to Computing, 3rd ed. 16

Literalsint literals are whole numbers: -27, 0, 4, +4,012,0xA3B double literals are real numbers, and can be:• fixed-point: -0.333, 0.5, 1.414, ...• floating-point: 2.998e8, 0.2998e9, ...

There are just two bool literals: false, truechar literals are single ASCII characters: ‘A’, ‘a’, ‘9’, ‘$’, ‘?’, ...string literals are ASCII character sequences: “Hello”, “Goodbye”, “Goodbye\n”, ...

C++ An Introduction to Computing, 3rd ed. 17

Constants

Declaration of software objects that remain constantconst double HOURLY_WAGE = 6.75;

Rules• const is a keyword• Specify type• Specify the name (caps recommended)• Must be initialized with value at declaration

C++ An Introduction to Computing, 3rd ed. 18

Constants

Reasons to use constants• Improve readability of the source code• Facilitate program modification

Good programming practice• Place all constant declarations at beginning of

function where usedSee some predefined constants in <climits> and <cfloat> libraries. (page 43)

C++ An Introduction to Computing, 3rd ed. 19

Variables

Give a name to a memory location• Compiler accesses specific memory location

when program uses a given variable

Refer to objects in the program for which the value can changeDeclarationtype variableName; // ortype variableName = initializer_expression;

C++ An Introduction to Computing, 3rd ed. 20

VariablesVariables Declaration• Can be either initialized or uninitialized...• If variable is uninitialized Contents must be

considered "garbage value"

Examples:int age = 18;double GPA = 3.25, credits;char letterGrade = ‘A’;bool ok, done = false;

C++ An Introduction to Computing, 3rd ed. 21

int Representation

Integers are often represented in the twos-complement format, High-order bit indicates the number’s sign: 210 = 00000000000000102

110 = 00000000000000012

010 = 00000000000000002

-110 = 11111111111111112

-210 = 11111111111111102

We show 16 bits, but 32 or 64 are common.

C++ An Introduction to Computing, 3rd ed. 22

unsigned ObjectsSome objects have values that are never negative, C++ provides the unsigned type:00000000000000002 = 010 00000000000000012 = 110 00000000000000102 = 210 ...11111111111111102 = 6553410

11111111111111112 = 6553510

No sign bit, numbers can be twice as big.

C++ An Introduction to Computing, 3rd ed. 23

int vs. unsignedUsing 32 bits, int values range from • -231 (-2147483648) to 231-1 (2147483647),

unsigned values range from• 0 to 232-1 (4294967295).

An int value “loses” one of its bits to the sign, Maximum int value is about half of the maximum unsigned value.

C++ An Introduction to Computing, 3rd ed. 24

double Objects

Real values are often represented in 64 bits Use the IEEE floating point standard:

mantissa(52 bits)

exponent(11 bits)

sign(1 bit)

C++ An Introduction to Computing, 3rd ed. 25

double Objects

Overflow• Exponent is too large• Not enough bits to represent

Underflow• Number is so small• Not enough bits to represent negative

exponent

C++ An Introduction to Computing, 3rd ed. 26

char and String Objects

Characters represented internally with binary codes• 8 bits – only 128 characters

Strings stored as a sequence of these binary codes

C++ An Introduction to Computing, 3rd ed. 27

char and String Objects

Unicode uses 16 bit codesPossible to represent more than 65,000 characters

Can includespecialcharacters

C++ An Introduction to Computing, 3rd ed. 28

Booleans

Only two values• true and false• true stored as 1

• Anything non zero will be interpreted as true• false stored as 0

Could be stored in a single bit• Usually stored in a word or byte