Variable and Data Types
Variable and Data Types
C-1
Overview
Concepts this lecture:
Variables
Declarations
Identifiers and Reserved Words
Types
Expressions
Assignment statement
Variable initialization
C-2
Container
Container type
Container Capacity
Operation over container type
C-3
Review: Memory
Memory is a collection of locations called
variables
In a programming language, we get at the
location by using a variable
Each variable has
A name (an identifier)
A type (the kind of information it can contain)
C-4
Memory and Variables
Memory is a collection of locations called
variables
In a programming language, we get at the
location by using a variable
Each variable has
A name (an identifier)
A type (the kind of information it can contain)
Basic types include
int (integers – whole numbers: 17, -42)
double (floating-point numbers with optional fraction
and/or exponent: 3.14159, 6.02e23)
char (character data: ‘a’, ‘?’, ‘N’, ‘ ’, ‘9’)
Note: ‘9’ is a character; 9 is an integer – they are different
and have different types
C-5
Variable
C-6
Basic Datatypes
Integer (2b)
Decimal (4b)
Character (1b)
C-7
Data Type
Int is used to define integer float is used to define floating
numbers. point numbers.
{ {
int Count; float Miles;
Count = 5; Miles = 5.6;
} }
You can find out how much storage is allocated to a data type by
using the sizeof operator.
printf("%d \n", sizeof(int));
C-8
Modifier
The three data types above have the following modifiers.
short
long
signed
unsigned
The modifiers define the amount of storage allocated to the variable.
The amount of storage allocated is not cast in stone.
ANSI has the following rules
short int <= int <= long int float <= double <= long double
C-9
DataTypes
C-
10
Memory example
Variable declarations in C
int i = 12;
double gasPrice = 1.799;
char bang = ‘!’;
Picture:
i 12 (int)
gasPrice 1.799 (double)
bang ‘!’ (char)
C-11
Declaring Variables
int months;
Integer variables represent whole numbers:
1, 17, -32, 0 Not 1.5, 2.0, ‘A’
double pi;
Floating point variables represent real numbers:
3.14, -27.5, 6.02e23, 5.0 Not 3
char first_initial, middle_initial, marital_status;
Character variables represent individual keyboard
characters:
'a', 'b', 'M', '0' , '9' , '#' , ' ' Not "Bill"
C-12
Variable Names
"Identifiers" are names for things in a program
for examples, names of variables
In C, identifiers follow certain rules:
•use letters, numerals, and underscore ( _ )
•do not begin with a numeral
•cannot be “reserved words”
•are "case-sensitive"
•can be arbitrarily long but...
C-13
Reserved words
Certain identifiers have a "reserved"
(permanent, special) meaning in C
• We’ve seen int already
• Will see a couple of dozen more
eventually
These words always have that special meaning,
and cannot be used for other purposes.
• Cannot be used names of variables
• Must be spelled exactly right
• Sometimes also called “keywords”
C-14
Under the Hood
All information in the CPU or memory is actually a series
of ‘bits’: 1’s and 0’s
Known as ‘binary’ data
Amazingly, all kinds of data can be represented in binary:
numbers, letters, sounds, pictures, etc.
The type of a variable specifies how the bits are
interpreted
Binary C type (sample) value
01010001 int 161
char ‘A’
double 10.73
C-15
Assignment Statements
An assignment statement stores a value into a
variable.
The assignment may specify a simple value to be
stored, or an expression
int area, length, width; /* declaration of 3 variables */
length = 16; /* "length gets 16" */
width = 32; /* "width gets 32" */
area = length * width; /* "area gets length times width" */
C-16
my_age = my_age+1
This is a “statement”, not an equation. Is there a
difference?
The same variable may appear on both sides of an
assignment statement
my_age = my_age + 1 ;
balance = balance + deposit ;
C-17
Program Execution
A memory location is reserved by declaring a C variable
C-18
An Example
/* calculate and print area of 10x3 rectangle */
#include <stdio.h>
int main(void) {
int rectangleLength;
int rectangleWidth;
int rectangleArea;
rectangleLength = 10;
rectangleWidth = 3;
rectangleArea = rectangleLength * rectangleWidth ;
printf(“%d”, rectangleArea);
return 0;
}
C-19
Hand Simulation
A useful practice is to simulate by hand the
operation of the program, step by step.
C-20
Tracing the Program
after ? ? ?
declaration
after statement 10 ? ?
1
after statement 10 3 ?
2
after statement 10 3 30
3
C-21
Initializing variables
Initialization means giving something a value for the
first time.
Anything which changes the value of a variable is a
potential way of initializing it.
For now, that means assignment
statement
General rule: variables have to be initialized before
their value is used.
Failure to initialize is a common source of
bugs.
Variables in a C program are not automatically
initialized to 0!
C-22
Declaring vs Initializing
int main (void) {
double income; /*declaration of income, not an
assignment or initialization */
return 0;
}
C-23
Example Problem:
Fahrenheit to Celsius
Problem (specified):
Convert Fahrenheit temperature to
Celsius
C-24
Example Problem:
Fahrenheit to Celsius
Problem (specified):
Convert Fahrenheit temperature to Celsius
C-25
Fahrenheit to Celsius (I)
An actual C program
#include <stdio.h>
int main(void)
{
double fahrenheit, celsius;
return 0;
}
C-26
Fahrenheit to Celsius (II)
#include <stdio.h>
int main(void)
{
double fahrenheit, celsius;
printf("Enter a Fahrenheit temperature: ");
scanf("%lf", &fahrenheit);
celsius = (fahrenheit - 32.0) * 5.0 / 9.0;
printf("That equals %f degrees Celsius.",
celsius);
return 0;
}
C-27
Running the Program
Program trace
fahrenheit celsius
after declaration ? ?
after first printf ? ?
after scanf 45.5 ?
after assignment 45.5 7.5
after second printf 45.5 7.5
C-28
Assignment step-by-step
celsius = (fahrenheit-32.0) * 5.0 / 9.0 ;
C-29
Fahrenheit to Celsius
(III)
#include <stdio.h>
int main(void)
{
double fahrenheit, celsius;
printf("Enter a Fahrenheit temperature: ");
scanf("%lf", &fahrenheit);
celsius = fahrenheit - 32.0 ;
celsius = celsius * 5.0 / 9.0 ;
printf("That equals %f degrees Celsius.",
celsius);
return 0;
}
C-30
Qualifiers
1. Const
The const qualifier is used to tell C that the variable value can not
change after initialisation.const float pi=3.14159;
pi cannot be changed at a later time within the program.
# define pi 3.14159
const int class_size = 40;
1. Volatile
A variable should be declared volatile whenever its value can
be changed by something beyond the control of the program
volatile int var;
int volatile var;
Usage
Memory-mapped peripheral registers
Global variables modified by an interrupt service routine
Global variables within a multi-threaded application
use normally in embedded programming.
Declaration of Storage
1. Class
Auto
1. It is a local variable known only to the function in which it is
declared. Auto is the default storage class.
main{float a=0;}
1. Static
1. Local variable which exists and retains its value even after the
control is transferred to the calling function.
main{ static float a=0;}
1. Extern
1. Global variable known to all functions in the file
main{ extern float a=0;}
• Register
1. Social variables which are stored in the register.
main{ register float a=0;} C-
32