C Language-N0tes
C Language-N0tes
• The preprocessor doesn’t know about the scope rules of C. Preprocessor directives
like #define come into effect as soon as they are seen and remain in effect until the
end of the file that contains them; the program’s block structure is irrelevant.
1. Removing comments : It removes all the comments. A comment is written only for
the humans to understand the code. So, it is obvious that they are of no use to a
machine. So, preprocessor removes all of them as they are not required in the
execution and won’t be executed as well.
2. • File inclusion : Including all the files from library that our program needs. In HLL
we write #include which is a directive for the preprocessor that tells it to include the
contents of the library file specified. For example, #include will tell the preprocessor
to include all the contents in the library file stdio.h.
This can also be written using double quotes – #include “stdio.h”
Note: If the filename is enclosed within angle brackets, the file is searched for in the
standard compiler include paths. If the filename is enclosed within double quotes, the
search path is expanded to include the current source directory.
3. • Macro expansion : Macros can be called as small functions that are not as
overhead to process. If we have to write a function (having a small definition) that
needs to be called recursively (again and again), then we should prefer a macro over a
function.
So, defining these macros is done by preprocessor.
#define SI 1000 is a simple example of a macro.
Unit 2
Operators in C / C++
Operators are the foundation of any programming language. Thus the functionality of C/C++
programming language is incomplete without the use of operators. We can define operators
as symbols that help us to perform specific mathematical and logical computations on
operands. In other words we can say that an operator operates the operands.
For example, consider the below statement:
c = a + b;
Here, ‘+’ is the operator known as addition operator and ‘a’ and ‘b’ are operands. The
addition operator tells the compiler to add both of the operands ‘a’ and ‘b’.
C/C++ has many built-in operator types and they can be classified as:
2. Relational Operators: Relational operators are used for comparison of the values of
two operands. For example: checking if one operand is equal to the other operand or
not, an operand is greater than the other operand or not etc. Some of the relational
operators are (==, >= , <= ). To learn about each of these operators in details go to
this link.
• “=”: This is the simplest assignment operator. This operator is used to assign the
value on the right to the variable on the left.
For example:
• a = 10;
• b = 20;
• ch = 'y';
• “+=”:This operator is combination of ‘+’ and ‘=’ operators. This operator first adds
the current value of the variable on left to the value on right and then assigns the
result to the variable on the left.
Example:
• (a += b) can be written as (a = a + b)
• “-=”:This operator is combination of ‘-‘ and ‘=’ operators. This operator first
subtracts the value on right from the current value of the variable on left and then
assigns the result to the variable on the left.
Example:
• (a -= b) can be written as (a = a - b)
• “*=”:This operator is combination of ‘*’ and ‘=’ operators. This operator first
multiplies the current value of the variable on left to the value on right and then
assigns the result to the variable on the left.
Example:
• (a *= b) can be written as (a = a * b)
If initially value stored in a is 5. Then (a *= 6) = 30.
• “/=”:This operator is combination of ‘/’ and ‘=’ operators. This operator first divides
the current value of the variable on left by the value on right and then assigns the
result to the variable on the left.
Example:
• (a /= b) can be written as (a = a / b)
• Other Operators: Apart from the above operators there are some other operators available
in C or C++ used to perform some specific task. Some of them are discussed here:
The below table describes the precedence order and associativity of operators in C / C++ .
Precedence of operator decreases from top to bottom.
In a 'C' program are executed sequentially. This happens when there is no condition around
the statements. If you put some condition for a block of statements the flow of execution
might change based on the result evaluated by the condition. This process is referred to as
decision making in 'C.' The decision-making statements are also called as control statements.
In 'C' programming conditional statements are possible with the help of the following two
constructs:
1. If statement
2. If-else statement
If statement
It is one of the powerful conditional statement. If statement is responsible for modifying the
flow of execution of a program. If statement is always used with a condition. The condition is
evaluated first before executing any statement inside the body of If. The syntax for if
statement is as follows:
if (condition)
instruction;
The condition evaluates to either true or false. True is always a non-zero value, and false is a
value that contains zero. Instructions can be a single instruction or a code block enclosed by
curly braces { }.
#include<stdio.h>
int main()
{
int num1=1;
int num2=2;
if(num1<num2) //test-condition
{
printf("num1 is smaller than num2");
}
return 0;
}
Output:
The if-else is statement is an extended version of If. The general form of if-else is as follows:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
n this type of a construct, if the value of test-expression is true, then the true block of
statements will be executed. If the value of test-expression if false, then the false block of
statements will be executed. In any case, after the execution, the control will be automatically
transferred to the statements appearing outside the block of If.
We will initialize a variable with some value and write a program to determine if the value is
less than ten or greater than ten.
Let's start.
#include<stdio.h>
int main()
{
int num=19;
if(num<10)
{
printf("The value is less than 10");
}
else
{
printf("The value is greater than 10");
}
return 0;
}
Output:
When a series of decision is required, nested if-else is used. Nesting means using one if-else
construct within another one.
#include<stdio.h>
int main()
{
int num=1;
if(num<10)
{
if(num==1)
{
printf("The value is:%d\n",num);
}
else
{
printf("The value is greater than 1");
}
}
else
{
printf("The value is greater than 10");
}
return 0;
}
Output:
The general syntax of how else-if ladders are constructed in 'C' programming is as follows:
if (test - expression 1) {
statement1;
} else if (test - expression 2) {
Statement2;
} else if (test - expression 3) {
Statement3;
} else if (test - expression n) {
Statement n;
} else {
default;
}
Statement x;
This type of structure is known as the else-if ladder. This chain generally looks like a ladder
hence it is also called as an else-if ladder. The test-expressions are evaluated from top to
bottom. Whenever a true test-expression if found, statement associated with it is executed.
When all the n test-expressions becomes false, then the default else statement is executed.
#include<stdio.h>
int main()
{
int marks=83;
if(marks>75){
printf("First class");
}
else if(marks>65){
printf("Second class");
}
else if(marks>55){
printf("Third class");
}
else{
printf("Fourth class");
}
return 0;
}
Output:
Syntax:
switch (n)
{
case 1: // code to be executed if n = 1;
break;
case 2: // code to be executed if n = 2;
break;
default: // code to be executed if n doesn't match any cases
}
Example :
// Following is a simple C program
// to demonstrate syntax of switch.
#include <stdio.h>
int main()
{
int x = 2;
switch (x)
{
case 1: printf("Choice is 1");
break;
case 2: printf("Choice is 2");
break;
case 3: printf("Choice is 3");
break;
default: printf("Choice other than 1, 2 and 3");
break;
}
return 0;
}
break statement
In C programming, break statement is used with conditional if statement.
The break is used in terminating the loop immediately after it is encountered.
it is also used in switch...case statement. which is explained in next topic.
Syntax:
break;
The break statement can be used in terminating loops like for, while and do...while
Example:
//Write a C Program Which use of break statement.
#include<stdio.h>
#include<conio.h>
void main(){
int num, sum=0;
int i,n;
printf("Note: Enter Zero for break loop!\n");
printf("Enter Number of inputs\n");
scanf("%d",&n);
for(i=1;i<=n;++i){
printf("Enter num%d: ",i);
scanf("%d",&num);
if(num==0) {
break; /*this breaks loop if num == 0 */
printf("Loop Breaked\n");
}
sum=sum+num;
}
printf("Total is %d",sum);
getch();
}
Output:
Command Prompt
continue statement
It is sometimes desirable to skip some statements inside the loop. In such cases, continue
statement is used.
Syntax:
continue;
Example:
//Write a C Program Which use of continue statment.
#include<stdio.h>
#include<conio.h>
void main(){
int i, n=20;
clrscr();
for(i=1;i<=n;++i){
if(i % 5 == 0) {
printf("pass\n");
continue; /*this continue the execution of loop if i % 5
== 0 */
}
printf("%d\n",i);
}
getch();
}
Output:
Command Prompt
1
2
3
4
pass
6
7
8
9
pass
11
12
13
14
pass
16
17
18
19
pass
goto statement
In C programming, goto statement is used for altering the normal sequence of program
execution by transferring control to some other part of the program.
Syntax:
goto label;
.............
.............
.............
label:
statement;
Example:
//Write a C Program Which Print 1 To 10 Number Using goto statement.
#include<stdio.h>
#include<conio.h>
void main()
{
int i=1;
clrscr();
count: //This is Label
printf("%d\n",i);
i++;
if(i<=10) {
goto count; //This jumps to label "count:"
}
getch();
}
Output:
Command Prompt
1
2
3
4
5
6
7
8
9
10
Note:
Though goto statement is included in ANSI standard of C, use of goto statement should be
reduced as much as possible in a program.
• Though, using goto statement give power to jump to any part of program, using goto
statement makes the logic of the program complex and tangled.
• In modern programming, goto statement is considered a harmful construct and a bad
programming practice.
• The goto statement can be replaced in most of C program with the use of break and
continue statements.
• In fact, any program in C programming can be perfectly written without the use of goto
statement.
• All programmer should try to avoid goto statement as possible as they can.
In looping, a program executes the sequence of statements many times until the stated
condition becomes false. A loop consists of two parts, a body of a loop and a control
statement. The control statement is a combination of some conditions that direct the body of
the loop to execute until the specified condition becomes false.
Types of Loops
Depending upon the position of a control statement in a program, a loop is classified into two
types:
In an entry controlled loop, a condition is checked before executing the body of a loop. It is
also called as a pre-checking loop.
In an exit controlled loop, a condition is checked after executing the body of a loop. It is also
called as a post-checking loop.
Sample Loop
The control conditions must be well defined and specified otherwise the loop will execute an
infinite number of times. The loop that does not stop executing and processes the statements
number of times is called as an infinite loop. An infinite loop is also called as an "Endless
loop." Following are some characteristics of an infinite loop:
The specified condition determines whether to execute the loop body or not.
While Loop
A while loop is the most straightforward looping structure. The basic format of while loop is
as follows:
while (condition) {
statements;
}
After exiting the loop, the control goes to the statements which are immediately after the
loop. The body of a loop can contain more than one statement. If it contains only one
statement, then the curly braces are not compulsory. It is a good practice though to use the
curly braces even we have a single statement in the body.
In while loop, if the condition is not true, then the body of a loop will not be executed, not
even once. It is different in do while loop which we will see shortly.
#include<stdio.h>
#include<conio.h>
int main()
{
int num=1; //initializing the variable
while(num<=10) //while loop with condition
{
printf("%d\n",num);
num++; //incrementing operation
}
return 0;
}
Output:
1
2
3
4
5
6
7
8
9
10
Do-While loop
A do-while loop is similar to the while loop except that the condition is always executed after
the body of a loop. It is also called an exit-controlled loop.
do {
statements
} while (expression);
As we saw in a while loop, the body is executed if and only if the condition is true. In some
cases, we have to execute a body of the loop at least once even if the condition is false. This
type of operation can be achieved by using a do-while loop.
In the do-while loop, the body of a loop is always executed at least once. After the body is
executed, then it checks the condition. If the condition is true, then it will again execute the
body of a loop otherwise control is transferred out of the loop.
Similar to the while loop, once the control goes out of the loop the statements which are
immediately after the loop is executed.
The critical difference between the while and do-while loop is that in while loop the while is
written at the beginning. In do-while loop, the while condition is written at the end and
terminates with a semi-colon (;)
#include<stdio.h>
#include<conio.h>
int main()
{
int num=1; //initializing the variable
do //do-while loop
{
printf("%d\n",2*num);
num++; //incrementing operation
}while(num<=10);
return 0;
}
Output:
2
4
6
8
10
12
14
16
18
20
For loop
A for loop is a more efficient loop structure in 'C' programming. The general structure of for
loop is as follows:
#include<stdio.h>
int main()
{
int number;
for(number=1;number<=10;number++) //for loop to print 1-10
numbers
{
printf("%d\n",number); //to print the number
}
return 0;
}
Output:
1
2
3
4
5
6
7
8
9
10
Unit 3
Types of Functions in C
In real time, a function may be defined with or without parameters and a function may or may
not return a value. It completely depends upon the user requirement. In this article, We will
explain you the types of functions in C Programming language with an example.
The Following examples will explain you the available function types in C programming.
In this method, We won’t pass any arguments to the function while defining, declaring or
calling the function. This type of functions in C will not return any value when we call the
function from main() or any sub function. When we are not expecting any return value but,
we need some statements to be printed as output then, this type of functions in C are very
useful.
// Function Declaration
void Addition();
void main()
{
printf("\n ............. \n");
Addition();
}
void Addition()
{
int Sum, a = 10, b = 20;
Sum = a + b;
OUTPUT
In this program, We are going to calculate the multiplication of 2 integer values using the
user defined function without arguments and return keyword.
OUTPUT
Function with argument and No Return value Example
This program allows the user to enter 2 integer values and then, We are going to pass those
values to the user-defined function to calculate the sum.
#include<stdio.h>
void main()
{
int a, b;
Sum = a + b;
This program allows the user to enter 2 integer values and then, We are going to pass those
values to the user-defined function to multiply those values and return the value using return
keyword.
#include<stdio.h>
int main()
{
int a, b, Multi;
Multi = a * b;
return Multi;
}