Types Chapter 2 C An Introduction to Computing




























- Slides: 28
Types Chapter 2 C++ An Introduction to Computing, 3 rd ed.
Objectives Observe types provided by C++ • Literals of these types Explain syntax rules for identifier names Study variables and constants • • What they are How they differ How to declare How to use Investigate internal representations First look at class attribute variables C++ An Introduction to Computing, 3 rd ed. 2
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 C++ An Introduction to Computing, 3 rd ed. 3
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 32 bits (4 bytes) – long int (or long) • Range -2137483648 … 2137483647 (maybe 64) One bit used for the sign C++ An Introduction to Computing, 3 rd ed. 4
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, 3 rd ed. 5
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, 3 rd ed. 6
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, 3 rd ed. 7
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 C++ An Introduction to Computing, 3 rd ed. 8
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 forms 0. 12 e 11 1. 2 E 10 12. 0 E 9 12. e 9 12 E 9 C++ An Introduction to Computing, 3 rd ed. 9
Characters char type Represents individual characters • See ASCII character set in Appendix A Characters represented in memory by numeric values Character literals • Characters enclosed in single quotes 'X' '7' '>' 'e' C++ An Introduction to Computing, 3 rd ed. 10
Characters Escape characters • A backslash combined with another character hold special meaning Character C++ Escape Sequence Newline n Horizontal tab t Vertical tab v Backspace b Carriage Return r Form Feed f Alert (beep) a C++ An Introduction to Computing, 3 rd ed. 11
Strings Need #include <string>; using namespace std; A sequence of characters • Enclosed in double quotes "Hi Mom” • Can include escape characters "n. The answer is " Warning • "A" is a string literal • 'A' is a character literal C++ An Introduction to Computing, 3 rd ed. 12
Identifiers Names given to software objects Rules: • 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, 3 rd ed. 13
Identifiers C++ is case sensitive • first. Name is not the same as firstname Typical usage • Constants are all caps PI • Variables • Start with lower case • Capitalize first letter of successive words monthly. Electric. Charge C++ An Introduction to Computing, 3 rd ed. 14
Object Categories There are three kinds of objects: Literals: • unnamed objects • having a value • (0, -3, 2. 5, 2. 998 e 8, ‘A’, “Hellon”, . . . ) Variables: • named objects • values can change during program execution Constants: • named objects • values do not change during program execution C++ An Introduction to Computing, 3 rd ed. 15
Literals int literals are whole numbers: -27, 0, 4, +4, 012, 0 x. A 3 B double literals are real numbers, and can be: • fixed-point: -0. 333, 0. 5, 1. 414, . . . • floating-point: 2. 998 e 8, 0. 2998 e 9, . . . There are just two bool literals: false, true char literals are single ASCII characters: ‘A’, ‘a’, ‘ 9’, ‘$’, ‘? ’, . . . string literals are ASCII character sequences: “Hello”, “Goodbyen”, . . . C++ An Introduction to Computing, 3 rd ed. 16
Constants Declaration of software objects that remain constant const 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, 3 rd ed. 17
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 used See some predefined constants in <climits> and <cfloat> libraries. (page 43) C++ An Introduction to Computing, 3 rd ed. 18
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 change Declaration type variable. Name; // or type variable. Name = initializer_expression; C++ An Introduction to Computing, 3 rd ed. 19
Variables 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 letter. Grade = ‘A’; bool ok, done = false; C++ An Introduction to Computing, 3 rd ed. 20
int Representation Integers are often represented in the twos-complement format, High-order bit indicates the number’s sign: 210 = 0000000102 110 = 0000000012 010 = 000000002 -110 = 111111112 -210 = 1111111102 We show 16 bits, but 32 or 64 are common. C++ An Introduction to Computing, 3 rd ed. 21
unsigned Objects Some objects have values that are never negative, C++ provides the unsigned type: 000000002 0000000012 0000000102. . . 1111111102 111111112 = 010 = 110 = 210 = 6553410 = 6553510 No sign bit, numbers can be twice as big. 22 C++ An Introduction to Computing, 3 rd ed.
int vs. unsigned Using 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, 3 rd ed. 23
double Objects Real values are often represented in 64 bits Use the IEEE floating point standard: exponent (11 bits) sign (1 bit) mantissa (52 bits) C++ An Introduction to Computing, 3 rd ed. 24
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, 3 rd ed. 25
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, 3 rd ed. 26
char and String Objects Unicode uses 16 bit codes Possible to represent more than 65, 000 characters Can include special characters C++ An Introduction to Computing, 3 rd ed. 27
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 C++ An Introduction to Computing, 3 rd ed. 28