Tokens in C contd…
Identifiers
An Identifier is a sequence of letters and digits, but
must start with a letter.
Underscore ( _ ) is treated as a letter.
Identifiers are case sensitive.
Identifiers are used to name variables, functions
etc.
Valid: Root, _getchar, __sin, x1, x2,
x3, x_1, If
Invalid: 324, short, price$, My Name
Tokens in C contd…
String Literals
A sequence of characters enclosed in double
quotes as “…”.
For example “13” is a string literal and not number
13. ‘a’ and “a” are different.
Operators
Arithmetic operators like +, -, *, / ,% etc.
Logical operators like ||, &&, ! etc. and so on.
Tokens in C contd…
Constants:
The value of constant can not be changed once
its declared. Two types of constant are there:
Declared Constant:
using const keyword---
const float pi=3.14
Defined Constant:
Programmer can define their own names to
constant by using the #define directive as
given
Variable:
A variable is a storage space (container) for a value.
The two basic operations of a variable are:
– Assign a value to the variable.
I.e. put that value into the container.
– Get the current value of the variable.
One actually gets a copy of the value. The value
remains in the
variable until another value is assigned.
Variables are typed: Each variable can store only
values of a certain type.
That type is defined in the declaration of the variable.
Variables must be declared before they can be used.
Variables
Naming a Variable:
Must be a valid identifier.
Must not be a keyword
Names are case sensitive.
Variables are identified by only first 32 characters.
Library commonly uses names beginning with _.
Data Types
Data type in C Programming is a set of data with
values having predefined characteristics.
For every data type there is a assigned range.
Basic data types in C language
Following data types are provided by C
int (small integer numbers)
float (small real numbers)
char (one character)
short (very small integer numbers)
long (bigger integers numbers)
double (bigger real numbers)
Size of these are machine and compiler
dependent.
Think of these as different types of boxes of
different sizes which can occupy different items.
Name Description Size* Range*
char Character or
small integer
1 byte signed: -128 to 127
unsigned: 0 to 255
short int
(short)
Short integer 2
bytes
signed: -32768 to 32767
unsigned: 0 to 65535
int Integer 4
bytes
signed: -2147483648 to
2147483647
unsigned: 0 to
4294967295
long int
(long)
Long integer 4
bytes
signed: -2147483648 to
2147483647
unsigned: 0 to
4294967295
float Floating point
number
4
bytes
3.4e +/- 38 (7 digits)
double Double precision
floating point
number
8
bytes
1.7e +/- 308 (15 digits)
long
double
Long double
precision floating
point number
8
bytes
1.7e +/- 308 (15 digits)
Data
types
Variables
A variable is a name that represents
one or more memory locations used to
hold program data
A variable may be thought of as a
container that can hold data used in a
program
int myVariable;
myVariable = 5;
5
An example
int global = 10; //global variable
int func (int x)
{
static int stat_var; //static local variable
int temp; //(normal) local
variable
int name[50]; //(normal) local
variable
……
}
Hello World in C
#include <stdio.h>
int main()
{
printf(“Hello, world!n”);
}
Hello World in C
#include<stdio.h>
void main()
{
printf(“Hello, world!n”);
}
Program mostly a
collection of
functions
“main” function
special: the entry
point
“int” qualifier
indicates function
returns an integer
I/O performed by a
library function: not
included in the
language
Example
void main( )
{
int a=10; // integer type
float b=5.2; // real number
printf(“ Integer : %d”,a);
printf(“ Float : %f”,b);
}
What is the output of the above shown program??
Local variable
Local variables are declared within the body of a
function, and can only be used within that function.
Static variable
Another class of local variable is the static type. It is
specified by the keyword static in the variable declaration.
The most striking difference from a non-static local variable
is, a static variable is not destroyed on exit from the
function.
Global variable
A global variable declaration looks normal, but is located
outside any of the program's functions. So it is
accessible to all functions.
Variable types
Examples
How to Declare a Variable
int x;
int y = 12;
int a, b, c;
long int myVar = 0x12345678;
long z;
char first = 'a', second, third = 'c';
float big_number = 6.02e+23;
Variables
A Simple C Program
#include <stdio.h>
int main(void)
{
float radius, area, PI;
//Calculate area of circle
radius = 12.0;
PI = 3.1416;
area = PI * radius * radius;
printf("Area = %f", area);
}
Header
File
Function
Variable
Declarations
Comment
Preprocessor
Directives
Variables and Data Types
Variable
Declarations
Variables in use
#include <stdio.h>
int main(void)
{
float radius, area, PI;
//Calculate area of circle
PI = 3.1416;
radius = 12.0;
area = PI * radius * radius;
printf("Area = %f", area);
}
A Simple C
Program
printf()
The printf() function can be instructed to print
integers, floats and string properly.
The general syntax is
printf( “format”, variables);
An example
int stud_id = 5200;
char name[20] = “Mike”; // array
printf(“%s ‘s ID is %d n”, name, stud_id);
Format Identifiers
%d decimal integers
%x hex integer
%c character
%f float number
%lf double number
%s string
%p pointer
%e decimal exponent
How to specify display space for a
variable?
printf(“The student id is %5d n”, stud_id);
The value of stud_id will occupy 5 characters space in
printf()
Why “n”
It introduces a new line on the terminal
screen.
a alert (bell)
character
backslash
b backspace ? question mark
f formfeed ’ single quote
n newline ” double quote
r carriage return 00
0
octal number
t horizontal tab xh
h
hexadecimal
number
v vertical tab
escape sequence
Example: The following example shows the usage of scanf()
function to read strings.
Note: in scanf, we do not use & with array names
#include <stdio.h>
int main()
{
char str1[20], str2[30];
printf("Enter name: ");
scanf("%s", str1);
printf("Enter your website name: ");
scanf("%s", str2);
printf("Entered Name: %sn", str1);
printf("Entered Website:%s", str2);
}
scanf()
OUTPUT :
Enter name: raja
Enter your website name: google.com
Entered Name: raja
Entered Website: google.com
What happens in this program? An integer called pin is defined. A prompt to
enter in a number is then printed with the first printf statement. The scanf
routine, which accepts the response, has a control string and an address list.
In the control string, the format specifier %d shows what data type is expected.
The &pin argument specifies the memory location of the variable the input will
be placed in. After the scanf routine completes, the variable pin will be
initialized with the input integer. This is confirmed with the second printf
statement. The & character has a very special meaning in C. It is the address
operator.
Is a function in C which allows
the programmer to accept
input from a keyboard. The
following program illustrates
the use of this function.
scanf()
#include <stdio.h>
main() {
int pin;
printf("Please type in
your PINn");
scanf("%d",&pin);
printf("Your access
code is %dn",pin);
}
Negative
-
(unary)
Subtraction
-
Positive
+
(unary)
Modulo
%
Addition
+
NOTE - An int divided by an int returns an int:
10/3 = 3
Use modulo to get the remainder:
10%3 = 1
Multiplication
*
Division
/
Operator Result
Operatio
n
Example
-x
x - y
+x
x % y
x + y
x * y
x / y
Negative value of x
Difference of x and
y
Value of x
Remainder of x divided by y
Sum of x and y
Product of x and y
Quotient of x and
y
Arithmetic
Operations
Operat
or
Result (FALSE = 0,
TRUE ≠ 0)
Operati
on
Examp
le
Equal to
==
Not
equal to
!=
Greater than
>
Greater than
or equal to
>=
Less than
<
Less than or
equal to
<=
x == y
x != y
x > y
x >= y
x < y
x <= y
True if x equal to y, else false
True if x not equal
to y, else false
True if x greater than y,
else
false
True if x greater than or
equal to y, else false
True if x less than y, else false
True if x less than or
equal to y, else false
Relational
Operations
Example
Arithmetic operators
int i = 10;
int j = 15;
int add = i + j; //25
int diff = j – i; //5
int product = i * j; // 150
int quotient = j / i; // 1
int residual = j % i; // 5
i++; //Increase by 1
i--; //Decrease by 1
Comparing
them
int i = 10;
int j = 15;
float k = 15.0;
j / i = ?
j % i = ?
k / i = ?
k % i = ?
The Answer
j / i = 1;
j % i = 5;
k / i = 1.5;
k % i It is illegal.
Note: For %, the
operands can only
be integers.
Example
Logical Operations
What is “true” and “false” in C
In C, there is no specific data type to
represent “true” and “false”. C uses value “0”
to represent “false”, and uses non-zero value
to stand for “true”.
Logical Operators
A && B => A and B
A || B => A or B
A == B => Is A equal to B?
A != B => Is A not equal to B?
A > B => Is A greater than B?
A >= B => Is A greater than or equal to
B?
A < B => Is A less than B?
A <= B => Is A less than or equal to B?
Don’t be confused
&& and || have different meanings from & and |.
& and | are bitwise operators.
Logical Operations
Some practices
Compute the value of the following logical
expressions?
int i = 10; int j = 15; int k = 15; int m = 0;
if( i < j && j < k) =>
if( i != j || k < j) =>
if( j<= k || i > k) =>
if( j == k && m) =>
if(i) =>
if(m || j && i ) =>
int i = 10; int j = 15; int k = 15; int m = 0;
if( i < j && j < k) => false
if( i != j || k < j) => true
if( j<= k || i > k) => true
if( j == k && m) => false
if(i) => true
if(m || j && i ) => true
Answers
Operators
Assignment operators
In C lots of shortcut are possible by using
Shorthand operators.
For ex.
a = a + b can be written as
a += b
a = a * b can be written as
a *= b
a = a / b can be written as
a /= b
a = a - b can be written as
a -= b
Operators Contd…
Arithmetic operators: C supports five major
operators.
Addition +
Subtraction –
Division /
Multiplication *
Reminder %
Operators contd…
Relational Operators
The expression
operand1 relational-operator operand2
takes a value of 1 if the relationship is true and 0 if
relationship is false.
Example
int a = 25, b = 30, c, d;
c = a < b;
d = a > b;
value of c will be 1 and that of d will be 0.
Operators contd…
Logical Operators
&&, || and ! are the three logical operators.
expr1 && expr2 has a value 1 if expr1 and
expr2 both are nonzero.
expr1 || expr2 has a value 1 if expr1 and
expr2 both are nonzero.
!expr1 has a value 1 if expr1 is zero else 0.
Example
if ( marks >= 40 && attendance >= 75 )
grade = ‘P’
If ( marks < 40 || attendance < 75 )
grade = ‘N’
Operators
Increment and Decrement Operators
The operators ++ and –- are called increment and
decrement operators.
a++ and ++a are equivalent to a += 1.
a-- and --a are equivalent to a -= 1.
++a op b is equivalent to a ++; a op b;
a++ op b is equivalent to a op b; a++;
Example
Let b = 10 then
(++b)+b+b = ?
b+(++b)+b = ?
b+b+(++b) = ?
b+b*(++b) = ?
Rules of operator precedence
• BODMAS rules and associativity rules follows
(Highest)
• ^ Right associative
• *,/ left associative
• +,- left associative
Addition and subtraction – at same level but lower
than the above mentioned category (evaluation left
to right)
Multiplication, division and reminder on same
precedence (evaluation left to right)
Exponent are right associative( evaluate right to
Ex:
A + B +C means (A + B) + C
A ^ B ^ C means A ^(B ^ C), where ^ stands for
exponentiation
Class assignment
State the order of evaluation and result of
following statements
X = 7 + 3 * 6 / 2 – 1 ;
X = 2 % 2 + 2 * 2 – 2 / 2 ;
Precedence and Associativity of C Operators
Symbol Type of Operation Associativity
[ ] ( ) . –> postfix ++ and postfix –– Expression Left to right
prefix ++ and prefix –– sizeof
& * + – ~ !
Unary Right to left
typecasts Unary Right to left
* / % Multiplicative Left to right
+ – Additive Left to right
<< >> Bitwise shift Left to right
< > <= >= Relational Left to right
== != Equality Left to right
& Bitwise-AND Left to right
^ Bitwise-exclusive-OR Left to right
| Bitwise-inclusive-OR Left to right
&& Logical-AND Left to right
|| Logical-OR Left to right
? : Conditional-expression Right to left
= *= /= %=
+= –= <<= >>= &=
^= |=
Simple and compound
assignment
Right to left
, Sequential evaluation Left to right
OPERATOR
PRECEDENCE