View
72
Download
4
Category
Preview:
DESCRIPTION
Chapter 4 Literals, Variables and Constants. Spring 2014. Chapter 4 Literals, Variables and Constants. 4.1 Literals. A literal is a value that is interpreted as it is written Any numeric literal starting with 0x specifies that the following is a hexadecimal value - PowerPoint PPT Presentation
Citation preview
#Page 1
Chapter 4 Literals, Variables and Constants
Spring 2014
Chapter 4
Literals, Variables and
Constants
#Page 3
4.1 Literals
A literal is a value that is interpreted as it is written
Any numeric literal starting with 0x specifies that the following is a hexadecimal value
0xFF – this is a hexadecimal value
Any numeric literal starting with 0 is an octal value
0777 – this is an octal value
#Page 4
4.1 Literals
Character literals - single characters placed between apostrophes (‘)
‘a’
String literals - one or more characters placed between quotes ( “ )
“string”
Usually, treat single character as a character literal
#Page 5
4.2 Escape Sequences
Escape sequence - exception to the rule that literals are interpreted exactly as they are written
Escape sequences start with a backslash (\) followed by a single character
Two types of escape sequences• Character• Numeric
#Page 6
4.2.1 Character Escape Sequences
Can be embedded in a string literal or be used as a character literal
Null character - a special character used, among other things, to give a character variable an initial value
C++ is case sensitive, so \T is not a tab
EscapeSequence
Character Representation
\nCarriage return and line feed (new line)
\tTab (eight characters wide)
\" Double quote
\' Single quote
\\ Backslash
\0 Null character
#Page 7
4.2.1 Character Escape Sequences
cout << "This is on one line\n This is on another\n";cout << "\tHe said, \"Stop!\"";
// OutputThis is on one line This is on another He said, "Stop!"
cout << "This is an apostrophe: ";
cout << '\'';
// OutputThis is an apostrophe: '
#Page 8
4.3 Variable Declarations
Variable - a placeholder whose contents can change
Everything must be declared before it is used
#Page 9
4.3 Variable Declarations
A variable declaration has several purposes:• informs operating system how much internal memory
(RAM) the variable will need
• identifies the memory address to use for that variable
• identifies the type of data to be stored in that physical memory location
• indicates what operations (i.e., +, -, /, etc.) can be performed on the data contained within that variable
#Page 10
4.3 Variable Declarations
Basic declaration syntax<data type> identifier;
Data types discussed in the next section
Identifier - the variable name
int salary; // Notice the semicolon
#Page 11
4.3 Variable Declarations
Multiple variables can be declared in the same statement
int age, iq, shoe_size;
Variables can be declared anywhere as long as they are declared before used
Usually good idea to have all declarations at beginning of program
#Page 12
4.3.1 Variable’s Initial Value
When declared, its initial value is unknown
Important to provide an initial value for all variables
Initialization - process of giving a variable a value during its declaration - resulting in the variable always being in a known state
int sum = 0; //literalint Ralphs_age = RETIREMENT_AGE; //constant valueint Randys_age = Ralphs_age - 26; //variable
#Page 13
4.3.1 Variable’s Initial Value
Can initialize a variable to another variable’s value
<data type> identifier2 = identifier;
Initialization is the process of giving a variable a value during its declaration. As a result, the variable will always be in a known state.
int base_salary = 30000;
int num_dependents, staff_salary = base_salary;
#Page 14
4.3.1 Variable’s Initial Value
Another form of initialization - uses parentheses instead of the assignment operator
int base_salary( 30000 );
int num_dependents, staff_salary( base_salary );
#Page 15
4.3.2 Initialization
Always know the state, or value, of all variables
Variables should always be initialized
If you do not initialize, value unknown
Variables, even characters, are usually initialized to 0
#Page 16
4.3.3 Data Types
A data type:• Specifies how much memory a variable will
take up in memory
• Indicates operations that can be performed on the variable
Primitive data type - data type whose definition is built into the language
#Page 17
4.3.3 Primitive Data TypesC++
Data TypeDescription of Data
Memory Allocated
Range
char Character 1 byte -128 to 127
int Integer OS Dependent OS Dependent
float Floating point (decimal) 4 bytes3.4E +/- 38 with 7 digits of accuracy
doubleDouble precision floatingpoint
8 bytes1.7E +/- 308 with 15 digits of accuracy
bool Boolean data 1 byte true or false
short (or short int)
Smaller integer 2 bytes –32,768 to 32,767
long Larger integer 4 bytes–2,147,483,648 to2,147,483,647
long double Larger double 8 bytes1.7E +/- 308 with 15 digits of accuracy
#Page 18
4.3.3 Data Types
Boolean value - either true or false
Size of an integer (int) - dependent upon the operating system• On a 16-bit operation system such as Windows
3.x, an integer is 16 bits, or 2 bytes
• On a 32-bit operation system (Windows XP), an integer is 32 bits, or 4 bytes
#Page 19
4.3.3 Data Types
Size of an integer (int) - dependent upon the operating system (continued)
• On a 64-bit operation system - some versions of Windows Vista - an integer is 64 bits, or 8 bytes
#Page 20
4.3.3 Data Types
The amount of memory an integer requires determines the range of values
In a 32-bit operating system - since a bit can have one of two values - there will be 232 different possibilities
#Page 21
4.3.3 Data Types
Most significant bit is used as a sign bit• Zero meaning the number is positive
• One means its negative
• Therefore, left with 31 bits, or 231 different values
#Page 22
4.3.3 Data TypesUnsigned prefix for integral data types - the
sign bit is used for data instead of the sign
Integral data type - only holds whole numbers• A char data type is an integral data type • Under the hood a char holds an ASCII number
representing a character
Use smallest data type that will work with the data
#Page 23
4.3.4 The sizeof Operator
sizeof operator - determines number of bytes required for a specific data type
// Part 1cout << sizeof( char ) << '\n';
// Part 2unsigned short age = 21; cout << sizeof( age ) << '\n';
// Output12
#Page 24
4.3.5 Numeric Literal Suffixes
Numeric literal suffix - special character used to specify the type of literal
Numeric literal with an F suffix specifies a float, while L specifies a long value
#Page 25
4.3.5 Numeric Literal Suffixes
Either case will work for suffixes – but use capitals to avoid confusion between lower case l and a numeric 1
float money = 123.45F;// Flt pt (4 bytes) numericfloat avg = 95.5f; // literals are treated as long flag = 0L; // doubles (8 bytes) // Last character is not a one but a lowercase llong salary = 50000l;
#Page 26
4.3.6 Naming Rules
Variable naming rules:• Only made up of letters, digits and underscores
• abcdefghijklmnopqrstuvwxyz• ABCDEFGHIJKLMNOPQRSTUVWXYZ• 0123456789• _
• Can’t start with a digit (must begin with a letter or underscore)
• name01 is OK, 01name is not
• Can’t be a reserved word (if, else, while, etc.)• Else is OK as well as else1
Variable names should be descriptive, aiding in code readability
#Page 27
Identifiers
• An identifier is a sequence of characters used to denote one of the following:• Object or variable name• Class, structure, or union name• Enumerated type name• Member of a class, structure, union, or enumeration• Function or class-member function• typedef name• Label name• Macro name• Macro parameter
#Page 28
Identifiers (cont.)• The following characters are legal as the first character of
an identifier, or any subsequent character:• _ a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
• The following characters are legal as any character in an identifier except the first:• 0 1 2 3 4 5 6 7 8 9
• Cannot be the exact spelling and case as keywords• Identifiers that contain keywords are legal
• Pint
• Use of two underscore characters (__) at the beginning of an identifier, or a single leading underscore followed by capital letter, is reserved for C++ implementation
#Page 29
4.4 ASCII Characters
ASCII chart - associates characters with a number (page 630 in textbook)
American Standard Code for Information Interchange (ASCII)
#Page 30
ASCII Table and Description
#Page 31
4.4 ASCII Characters
Allow for the storage of characters in memory
Some important ASCII values:• 65 = ‘A’ (4116, 010000012)
• 97 = ‘a’ (6116, 011000012)
• 32 = ‘ ’ (space, 2016, 001000002)
• 48 = ‘0’ (character zero, 3016, 001100002)
The number 010 is stored as 0016, 000000002
The number 2010 is stored as 1416, 000101002
#Page 32
4.4 ASCII Characters
To display characters given an ASCII value use numeric escape sequences
cout << "Hexadecimal ASCII character: " << "\x4E" << endl;cout << "Octal ASCII character: " << "\77" << endl;
cout << "Hexadecimal number: " << 0x4E << endl;cout << "Octal number: " << 077 << endl;
//OutputHexadecimal ASCII character: NOctal ASCII character: ?Hexadecimal number: 78Octal number: 63
#Page 33
4.5 Constants
Constants - identifiers that have a value that will never change• Aid in code readability and maintainability
• Should have a name that is descriptive of their purpose
const int SPEED_LIMIT = 65;const int RETIREMENT_AGE = 67;const double PI = 3.1416;
#Page 34
4.6 const versus #define
To declare constants use the #define preprocessor directive
#define SPEED_LIMIT 65 // Notice no = or semicolons#define RETIREMENT_AGE 67#define PI 3.14
Preprocessor searches through the code replacing the identifier with the value associated with it
#Page 35
4.6 const versus #define
#define statements can cause compilation errors while looking syntactically correct
#define PI = 3.14; // Notice the = and ;
int main(){ int circumference = 0, radius = 5; circumference = 2 * PI * radius; return 0;}
#Page 36
4.6 const versus #define
Although the statement looks correct, it causes a compilation error
circumference = 2 * PI * radius;
Error becomes clearer if we show what was created by the preprocessor
circumference = 2 * = 3.14; * radius;
#Page 37
4.6 const versus #define
Use const versus #define because:
• const uses a data type and participates in type checking
• const has scope
#Page 38
4.7 Bringing It All Together
Useful to picture how variables and constants might be placed in memory
Examine the declarations below:
short int age;char grade = 'A';float gpa(0.0);const float PI = 3.14;
#Page 39
4.7 Bringing It All Together
They may be placed in memory as shown below:
? ? A 0 0 0 0 3 . 1 4
agegrade
gpa PI
#Page 40
Remember, pseudocode is a language independent representation of an algorithm
Using data types has a tendency to make the solution to closely tied to C++ (or any other language)
4.8 Variable Declarations in Pseudocode
#Page 41
4.8 Variable Declarations in Pseudocode
Do not put variable declarations in pseudocode
#includes are not specified in pseudocode and are considered necessary overhead to the algorithm
4.10 C – The Differences• C doesn’t have a Boolean data type (and no true or false)
• Doesn’t allow for the use of parentheses to initialize variables or constants
• In older versions of C, variables must be declared as the first statement in a block of code (after an opening curly brace)
4.10 C – The Differences
Current C standard allows a programmer to use const to create constants
Legacy C programs written must use the #define to create constants
Recommended