I Unit C
I Unit C
What is C?
operating system.
Features of C
1. Portability or machine independent
2. Sound and versatile language
3. Fast program execution.
4. An extendible language.
5. Tends to be a structured language.
/* Documentation section */
/* Link section */
/* Definition section */
/* Global declaration section */ main()
{
Declaration part
Executable part (statements)
}
/* Sub-program section */
➢ The last section, i.e. sub-program section is optional and used when we
require including user defined functions in the program.
First C Program
Before starting the abcd of C language, you need to learn how to write,
compile and run the first c program.
To write the first c program, open the C console and write the following code:
1. //First C Program
2. #include <stdio.h>
3. #include <conio.h>
4. void main()
5. {
6. printf("Hello C Language");
7. getch();
8. }
void main() The main() function is the entry point of every program in c
language. The void keyword specifies that it returns no value.
getch() The getch() function asks for a single character. Until you press
any key, it blocks the screen.
C Character set
The C character set is the fundamental building block for writing C programs. It defines
the valid characters that can be used in source code. The C character set is based on the
ASCII (American Standard Code for Information Interchange) standard and includes the
following categories:
• Alphabetic Characters:
o Uppercase letters: A-Z
o Lowercase letters: a-z
• Digits:
o Numeric characters: 0-9
• Special Characters: These include a wide range of symbols used for various purposes
within a C program. Examples include:
o Arithmetic operators: +, -, *, /, %
o Relational operators: <, >, ==, !=, <=, >=
o Logical operators: &&, ||, !
o Punctuation marks: ;, :, ,, ., ?, !
o Brackets and parentheses: (, ), [, ], {, }
o Quotes: ', "
o Other symbols: &, $, #, _, |, `\`, ~, @, ^
• WhiteSpace Characters: These are non-printing characters used for formatting and
readability, and are typically ignored by the compiler. Examples include:
o Space: ` `
o Horizontal tab: \t
o Vertical tab: \v
o Newline: \n
o Form feed: \f
o Carriage return: \r
Every character in the C character set has a corresponding ASCII value, which is its
numerical representation. This allows characters to be stored and manipulated by the
computer.
C TOKENS:
The smallest individual units are known as tokens. C has six types of tokens.
1: Identifiers
2: Keywords
3: Constants
4: Strings
5: Special Symbols
6: Operators
Identifiers:
Identifiers refer to the names of variables, constants, functions and arrays. These are
user-defined names is called Identifiers. These identifier are defined against a set of
rules.
Rules for an Identifier
1. An Identifier can only have alphanumeric characters( a-z , A-Z , 0-9 ) and underscore( _
).
2. The first character of an identifier can only contain alphabet( a-z , A-Z ) or underscore ( _
).
3. Identifiers are also case sensitive in C. For example name and Name are two different
identifier in C.
E Valid Invalid
x
:
STDNAME Return
SUB $stay
TOT_MARKS 1RECOR
D
_TEMP STD
NAME.
Y2K
Keywords: A keyword is a reserved word. All keywords have fixed meaning that means
we cannot change. Keywords serve as basic building blocks for program statements. All
keywords must be written in lowercase. A list of 32 keywords in c language is given
below:
Data Types/Types:
• To store data the program must reserve space which is done using datatype. A datatype is a
keyword/predefined instruction used for allocating memory for data. A data type specifies the
type of data that a variable can store such as integer, floating, character etc. It used for
declaring/defining variables or functions of different types before to use in a program.
There are 4 types of data types in C language.
The basic data types are integer-based and floating-point based. C language supports
both signed and unsigned literals. The memory size of basic data types may change
according to 32 or 64 bit operating system. Let‟s see the basic data types. Its size is given
according to 32 bit architecture.
Variables
Ex : int x,y,z;
float a,b; char
m,n;
x=100;
a= 12.25;
m=‟f‟;
we can also assign a value to a variable at the time of the variable is declared. The
general format of declaring and assigning value to a variable is :
Ex ; int x=100;
float a=12.25; char m=‟f‟;
Types of Variables in C
1. local variable
2. global variable
3. static variable
Constants
Constants refer to fixed values that do not change during the execution of a program.
CONSTANTS
TYPES OF C CONSTANT:
1. Integer constants
2. Real or Floating point constants
3. Character constants
4. String constants
5. Backslash character constants
Integer constants:
example:
• Decimal constants: 0, -9, 22 etc
• Octal constants: 021, 077, 033 etc
• Hexadecimal constants: 0x7f, 0x2a, 0x521 etc
• In C programming, octal constant starts with a 0 and hexadecimal constant starts with
a 0x.
1: Decimal Integer : the rules for represent decimal integer.
Ex : valid invalid
7 $77
77 077
+77 7,777
-77
2 : Octal : An integer constants with base 8 is called octal. These rules are :
E VALID INVALID
X
:
0123 123 -> it because no prefix
with 0
+0123 0128 -> because digits from 0
to 7.
3 : Hexadecimal : An integer constant with base value 16 is called Hexadecimal.
Ex : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
b) it should prefix with 0X or 0x.
c) it allows sign (+,-).
d) No special character is allowed.
EX : OX1a, ox2f
C PROGRAMMING Page 11
Floating point/Real constants:
A floating point constant is a numeric constant that has either a fractional form or an
exponent form. For example:
-2.0
0.0000234
-0.22E-5
Ex : 15.25
.75
30
-9.52
-92
+.94
Ex : 1.5E-
2
100e+3
C PROGRAMMING Page 12
-2.05e2
Character Constant:
“A‟ “ab‟
String constant : A string constant is a sequence of characters enclosed in double
quote, the characters may be letters, numbers, special characters and blank space etc
characters:
a) \n newline
b) \r carriage return
c) \t tab
d) \v vertical tab
e) \b backspace
f) \f form feed (page feed)
g) \a alert (beep)
h) \‟ single quote(„)
i) \” double quote(“)
j) \? Question mark (?)
C PROGRAMMING Page 13
k) \\ backslash (\)
1) C const keyword
The const keyword is used to define constant in C programming.
1. const float PI=3.14;
Now, the value of PI variable can't be changed.
1. #include <stdio.h>
2. #include <conio.h>
3. void main(){
4. const float PI=3.14;
5. clrscr();
6. printf("The value of PI is: %f",PI);
7. getch();
8. }
Output:
The value of PI is: 3.140000
2) C #define preprocessor
The #define preprocessor is also used to define
constant. C#define
The #define preprocessor directive is used to define constant or micro substitution. It
can use any basic data type.
Syntax:
#define token value
Let's see an example of #define to define a constant.
#include <stdio.h>
1. #define PI 3.14
2. main() {
3. printf("%f",PI);
4. }
Output:
3.140000
Input / Output (I/O) Functions : In „C‟ language, two types of Input/Output functions
are available, and all input and output operations are carried out through function calls.
C PROGRAMMING Page 14
Several functions are available for input / output operations in „C‟. These functions are
collectively known as the standard i/o library.
Input: In any programming language input means to feed some data into program. This
can be given in the form of file or from command line.
Output: In any programming language output means to display some data on screen,
printer or in any file.
The Standard Files
C programming treats all the devices as files. So devices such as the display are
addressed in the same way as files and the following three files are automatically opened
when a program executes to provide access to the keyboard and screen.
C PROGRAMMING Page 15
I / O Functions
gets() puts()
getch()
getche()
.
Formated I/O Functions : formatted I/O functions operates on various types of data.
1 : printf() : output data or result of an operation can be displayed from the computer to
a standard output device using the library function printf(). This function is used to print
any combination of data.
Formating string : it prints all the character given in doublequotes (“ “) except formatting
specifier.
scanf() : input data can be entered into the computer using the standard input „C‟
C PROGRAMMING Page 16
library function called scanf(). This function is used to enter any combination of input.
The scanf() function is used to read information from the standard input device
Each variable name (argument) must be preceeded by an ampersand (&). The (&)
symbol gives the meaning “address of “ the variable.
a) character I/O:
a) String I/O:
1. gets(): Used for accepting any string from the standard input(stdin) eg:gets()
Ex : a+b;
Where a,b are operands and + is the operator.
C PROGRAMMING Page 17
Types of Operator :
1) Arithmetic Operators.
2) Relational Operators.
3) Logical Operators.
4) Assignment Operators.
5). Unary Operators.
6) Conditional Operators.
7) Special Operators.
8) Bitwise Operators.
9) Shift Operators.
Arithmetic Operators
An arithmetic operator performs mathematical operations such as addition,
subtraction and multiplication on numerical values (constants and variables).
C Program to demonstrate the working of arithmetic
operators #include <stdio.h>
void main()
{
int a = 9,b = 4, c;
c = a+b;
printf("a+b = %d \n",c);
c = a-b;
printf("a-b = %d \n",c);
c = a*b;
printf("a*b = %d \n",c);
c=a/b;
printf("a/b = %d \n",c);
c=a%b;
printf("Remainder when a divided by b = %d \n",c);
}
Output
a+b = 13
a-b = 5
a*b = 36
a/b = 2
Remainder when a divided by b=1
#include <stdio.h>
int main()
int a = 5, b = 5, c = 10;
C PROGRAMMING Page 19
printf("%d != %d = %d \n", a, c, a != c); //true
return 0;
Output
5 == 5 = 1
5 == 10 = 0
5>5=0
5 > 10 = 0
5<5=0
5 < 10 = 1
5 != 5 = 0
5 != 10 = 1
5 >= 5 = 1
5 >= 10 = 0
5 <= 5 = 1
5 <= 10 = 1
C PROGRAMMING Page 20
Logical Operators.
These operators are used to combine the results of two or more conditions. An expression
containing logical operator returns either 0 or 1 depending upon whether expression
results true or false. Logical operators are commonly used in decision making in C
programming.
Logical AND : If any one condition false the complete condition becomes false.
Truth Table
Op1 Op2 Op1 && Op2
true true true
true false false
false true false
false false false
Logical OR : If any one condition true the complete condition becomes true.
Truth Table
Op1 Op2 Op1 || Op2
true true true
true false true
false true true
false false false
Logical Not : This operator reverses the value of the expression it operates on i.e, it
makes a true expression false and false expression true.
#include <stdio.h>
int main()
C PROGRAMMING Page 21
{
return 0;
Output
C PROGRAMMING Page 22
(a = b) || (c < b) equals to 1
(a != b) || (c < b) equals to 0
!(a != b) equals to 1
!(a == b) equals to 0
x=10;
y=a+b; z=p;
Operator Meaning
+= x=x+y
-= x=x-y
*= x=x*y
/= x=x/y
%= X=x%y
#include <stdio.h>
int main()
int a = 5, c; c
C PROGRAMMING Page 23
= a;
c += a; // c = c+a
c -= a; // c = c-a
c *= a; // c = c*a
c /= a; // c = c/a
c %= a; // c = c%a
return 0;
Output
c=5
c = 10
c=5
c = 25
C PROGRAMMING Page 24
c=5
c=0
Unary operators are having higher priority than the other operators. Unary operators, meaning
they only operate on a single operand.
1. Increment operator is used to increment the current value of variable by adding integer 1.
Operator. Pre-Increment
Pre-increment operator is used to increment the value of variable before using in the
expression. In the Pre-Increment value is first incremented and then used inside the
expression.
b = ++y;
In this example suppose the value of variable „y‟ is 5 then value of variable „b‟ will be 6
because the value of „y‟ gets modified before using it in a expression.
Post-Increment
b = x++;
In this example suppose the value of variable „x‟ is 5 then value of variable „b‟ will be 5
because old value of „x‟ is used.
C PROGRAMMING Page 25
Note :
We cannot use increment operator on the constant values because increment operator
operates on only variables. It increments the value of the variable by 1 and stores the
incremented value back to the variable
b = ++5;
or
b = 5++;
Operator Meaning
++x Pre increment
- -x Pre decrement
x++ Post increment
x-- Post decrement
Where
1 : ++x : Pre increment, first increment and then do the operation.
2 : - -x : Pre decrement, first decrements and then do the operation.
3 : x++ : Post increment, first do the operation and then increment.
4 : x- - : Post decrement, first do the operation and then decrement.
Output
++a = 11
--b = 99
++c = 11.500000
++d = 99.500000
Multiple increment operators inside printf
#include<stdio.h>
void main() {
int i = 1;
printf("%d %d %d", i, ++i, i++);
}
Output : 3 3 1
Pictorial representation
Explanation of program
I am sure you will get confused after viewing the above image and output of program.
1. Whenever more than one format specifiers (i.e %d) are directly or indirectly related with
same variable (i,i++,++i) then we need to evaluate each individual expression from right
to left.
2. As shown in the above image evaluation sequence of expressions written inside printf
will be – i++,++i,i
3. After execution we need to replace the output of expression at appropriate place
Step
N Explanation
o
Evaluate
1 At the time of execution we will be using older value of i = 1
i++
C PROGRAMMING Page 27
Evaluate At the time of execution we will be increment value already
2
++i modified after step 1 i.e i = 3
Evaluate
2 i At the time of execution we will be using value of i modified
in step 2
Output :
2
2
Explanation of Program
C PROGRAMMING Page 28
Conditional Operator/ Ternary operator:
conditional operator checks the condition and executes the statement depending of the
condition. A conditional operator is a ternary operator, that is, it works on 3 operands.
Conditional operator consist of two symbols.
#include <stdio.h>
int main(){
char February;
int days;
printf("If this year is leap year, enter 1. If not enter any integer: ");
scanf("%c",&February);
// If test condition (February == 'l') is true, days equal to 29.
// If test condition (February =='l') is false, days equal to
28. days = (February == '1') ? 29 : 28;
printf("Number of days in February =
%d",days); return 0;
}
Output
If this year is leap year, enter 1. If not enter any integer: 1
Number of days in February = 29
Bitwise Operators:
Bitwise operators are used to manipulate the data at bit level. It operates on integers
only. It may not be applied to float.In arithmetic-logic unit (which is within the CPU),
mathematical operations like: addition, subtraction, multiplication and division are done
in bit-level which makes processing faster and saves power. To perform bit-level
operations in C programming, bitwise operators are used.
Operator Meaning
& Bitwise
AND
| Bitwise OR
C PROGRAMMING Page 29
^ Bitwise XOR
<< Shift left
>> Shift right
~ One‟s
complement
.
The output of bitwise AND is 1 if the corresponding bits of two operands is 1. If either
bit of an operand is 0, the result of corresponding bit is evaluated to 0.
Let us suppose the bitwise AND operation of two integers 12
and 25. 12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bit Operation of 12 and 25
00001100
& 00011001
Bitwise OR operator |
00001100
C PROGRAMMING Page 30
| 00011001
#include <stdio.h>
int main()
return 0;
}
Output
Output =29
The result of bitwise XOR operator is 1 if the corresponding bits of two operands are
opposite. It is denoted by ^.
00001100
| 00011001
int main()
return 0;
}
Output
Output = 21
#include <stdio.h>
int main()
printf("complement = %d\n",~35);
printf("complement = %d\n",~-
C PROGRAMMING Page 32
12); return 0;
Output
Complement = -36
Complement = 11
Right shift operator shifts all bits towards right by certain number of specified bits. It is
denoted by >>.
Left shift operator shifts all bits towards left by certain number of specified bits. It is denoted by
<<.
Special Operators
1 ) Comma Operator :The comma operator is used to separate the statement elements
such as variables, constants or expressions, and this operator is used to link the related
expressions together, such expressions can be evaluated from left to right and the value
of right most expressions is the value of combined expressions
Syntax : sizeof(variable-name);
C PROGRAMMING Page 33
int a;
Ex : sizeof(a); //OUTPUT---- 2bytes
Expressions
Operator Precedence : Arithmetic Operators are evaluvated left to right using the
precedence of operator when the expression is written without the paranthesis.They
are two levels of arithmetic operators in C.
1 : High Priority * / %
2 : Low Priority + -.
Arithmetic Expression evaluation is carried out using the two phases from left to right.
1 : First phase : The highest priority operator are evaluated in the 1st phase.
2 : Second Phase : The lowest priority operator are evaluated in the 2nd phase.
Ex : a=x-y/3+z*2+p/4. x=7,
y=9, z=11, p=8. a= 7-
9/3+11*2+8/4.
1st phase :
1 : a = 7-3+11*2+8/4
2 : a = 7-3+22+8/4
3 : a = 7-3+22+2
2nd phase :
1 : a = 4+22+2
2 : a = 26+2
3 : a = 28
Whenever parentheses are used, the expressions within parantheses highest priority.
If two or more sets of paranthesis appear one after another. The expression contained in
the left-most set is evaluated first and the right-most in the last.
1st phase :
1 : 9-12/6*(2-1)
2 : 9-12/6*1
2nd phase :
1 : 9-2*1
2 : 9-2.
3rd phase :
1 : 7.
Associativity specifies the order in which the operators are evaluated with
the same precedence in a complex expression. Associativity is of two ways, i.e left to
ringht and right to left. Left to right associativity evaluates an expression starting
from left and moving towards right. Right to left associativity proceds from right to
left.
C PROGRAMMING Page 36
<< Left shift 5 L-R (left to
>> Right shift right)
< <= > Relational 6 L-R (left to
>= Operator right)
== Equality 7 L-R (left to
!= Inequality right)
& Bitwise AND 8 L-R (left to
right)
^ Bitwise XOR 9 L-R (left to
right)
| Bitwise OR 10 L-R (left to
right)
&& Logical AND 11 L-R (left to
right)
|| Logical OR 12 L-R (left to
right)
?: Conditional 13 R-L (right to left)
= *= /= Assignment 14 R-L (right to left)
%= += operator
-= &=
^= <<=
>>=
, Comma 15 L-R (left to
operator right)
Syntax:
(type_name) expression;
1. int f= 9/4;
2. printf("f : %d\n", f );//Output: 2
C PROGRAMMING Page 37
With Type Casting:
Example:
#include
<stdio.h> int
main()
getchar();
or
Type casting refers to changing an variable of one data type into another. The compiler
will automatically change one type of data into another if it makes sense. For instance, if
you assign an integer value to a floating-point variable, the compiler will convert the int
to a float. Casting allows you to make this type conversion explicit, or to force it when it
wouldn‟t normally happen.
C PROGRAMMING Page 38
When the type conversion is performed automatically by the compiler without
programmers intervention, such type of conversion is known as implicit type conversion
or type promotion.
int x;
The type conversion performed by the programmer by posing the data type of the
expression of specific type is known as explicit type conversion. The explicit type
conversion is also known as type casting.
Type casting in c is done in the following form:
(data_type)expression;
where, data_type is any valid c data type, and expression may be constant,
variable or expression.
For
example,
int x;
}
C PROGRAMMING Page 39
The following rules have to be followed while converting the expression from one
type to another to avoid the loss of information:
All integer types to be converted to float. All float types to be converted to double.
Example
; float z;
If we want to get the exact value of 7/5 then we need explicit casting from int to float:
float z;
C PROGRAMMING Page 40
C PROGRAMMING Page 41