C Unit 1
UNIT I
Computer systems:
A Computer is an
electronic device which performs operations such as accepts data
As an input, store
the data, manipulate or process the data and produce the results an output.
Main task
performed by a computer
• Accept the data
• Process or
manipulate the data
• Display or store
the result in the form of human understanding
•
Store the data, instructions and results.
A computer system consists of hardware and
software.
Computer hardware is the collection of physical elements that comprise a
computer system.
Computer software is a collection of computer programs and related data
that provides the instructions for a computer what to do and how to do it.
Software refers to one or more computer programs and data held in the storage
of the computer for some purpose
Basically computer software is of three main
types
System Software: System software is responsible for
managing a variety of
independent
hardware components, so that they can work together. Its purpose is
to unburden the
application software programmer from the often-complex details of
the particular
computer being used, including such accessories as communications
devices, printers,
device readers, displays and keyboards, and also to partition the
computer's
resources such as memory and processor time in a safe and stable
manner.
• Device drivers
• Operating
systems
• Servers
• Utilities
• Window systems
Programming
Software: Programming
Software usually provides tools to assist a
programmer in
writing computer programs, and software using different
programming
languages in a more convenient way. The tools include:
• Compilers
• Debuggers
• Interpreters
• Linkers
• Text editors
Application
Software: Application
software is developed to aid in any task that
benefits from
computation. It is a broad category, and encompasses Software of
many kinds,
including the internet browser being used to display this page. This
category includes:
• Business
software
• Computer aided
design
• Databases
• Decision making
software
• Educational
software
• Image editing
Computing Environment:
Computing
Environment is a collection of computers / machines, software, and networks
that support the processing and exchange of electronic information meant to
support various types of computing solutions.
Types of Computing Environments:
·
Personal
Computing Environment
·
Client
Server Environment
·
Time
sharing Environment
·
Distributed
Environment
Personal
Computing Environment:
All of
the computer hardware components are tied together in our personal
computer.
A personal computer (PC) is a computer whose original
sales price,
size,
and capabilities make it useful for individuals, and intended to be operated
directly
by an end user, with no intervening computer operator. People generally
relate
this term with Microsoft’s Windows Operating system. Personal computers
generally
run on Windows, Mac or some version of Linux operating system.
Desktop:
Desktop computer is just another version of Personal Computer
intended
for
regular use from a single use. A computer that can be fit on a desk can also be
called
as desktop.
Time-Sharing
Environment:
In the
time-sharing environment, all computing must be done by the central computer.
The central computer the shared resources, it manage the shared data and
printing. Employees in large companies often work in what is known as time sharing
environment. In the time sharing environment, many users are connected to one
or more computers. These computers may be mini computers and central mainframes.
In this environment the output devices, auxiliary storage devices are shared by
all the users.
Client/Server
Environment
Client/Server
computing environment splits the computing function between a
central computer
and user’s computers. The users are given personal computers or
work stations so
that some of the computation responsibility can be moved from
the central
computer and assigned to the workstations. In the client/server
environment the
users micro computers or work stations are called the client. The
central computer
which may be a powerful micro computer, minicomputer or
central mainframe
system is known as server.
Distributed
Computing Environment
A distributed
computing environment provides a seamless integration of computing
functions between
different servers and clients. The internet provides connectivity
to different
servers throughout the world. This environment provides reliable,
scalable
and highly available network.
COMPUTER LANGUAGES
In
order to communicate with the computer user also needs to have a language that
should be understood by the computer. For this purpose, different languages are
developed for performing different types of work on the computer. Basically,
languages are divided into two categories according to their interpretation.
1. Low Level Languages.
2. High Level Languages.
Low Level Languages
Low
level computer languages are machine codes or close to it. Computer cannot
understand instructions given in high level languages or in English. It can
only understand and execute instructions given in the form of machine language
i.e. language of 0 and 1. There are two types of low level languages:
·
Machine Language.
·
Assembly Language
Machine Language: It is the lowest and most elementary
level of Programming language and was the first type of programming language to
be Developed. Machine Language is basically the only language which computer
Can understand. In fact, a manufacturer designs a computer to obey just one
Language, its machine code, which is represented inside the computer by a
String of binary digits (bits) 0 and 1. The symbol 0 stands for the absence of
Electric pulse and 1 for the presence of an electric pulse . Since a computer
is Capable of recognizing electric signals, therefore, it understand machine
Language.
Advantages of Machine Language
i)
It makes fast and efficient use of the computer.
ii)
It requires no translator to translate the code i.e. Directly understood by the
computer
Disadvantages of Machine Language:
i) All operation codes have to be remembered
iv) These languages are machine dependent i.e. a
particular
Machine language can be used on only one type of computer
Assembly Language
It was developed to overcome some of the many
inconveniences of machine language. This is another low level but a very
important language in which operation codes and operands are given in the form
of alphanumeric symbols instead of 0’s and l’s. These alphanumeric symbols will
be known as mnemonic codes and can have maximum up to 5 letter combination e.g.
ADD for addition, SUB for subtraction, START,LABEL etc. Because of this feature
it is also known as ‘Symbolic Programming Language’. This language is also very
difficult and needs a lot of practice to master it because very small
English support is given to this language. The language
mainly helps in compiler orientations. The instructions of the Assembly
language will also be converted to machine codes by language translator to be
executed by the computer.
Advantages of Assembly Language
i) It is easier to understand and use as compared to machine
language.
ii)It is easy to locate and correct errors.
iii) It is modified easily
Disadvantages of Assembly Language
i)
Like machine language it is also machine dependent.
ii)
Since it is machine dependent therefore programmer Should have the knowledge of
the hardware also.
High Level Languages
High
level computer languages give formats close to English language and the purpose
of developing high level languages is to enable people to write programs easily
and in their own native language environment (English). High-level languages
are basically symbolic languages that use English words and/or mathematical
symbols rather than mnemonic codes. Each instruction in the high level language
is translated into many machine language instructions thus showing one-to-many
translation
Types of High Level Languages
Many
languages have been developed for achieving different variety of tasks, some
are fairly specialized others are quite general purpose.
These
are categorized according to their use as
a) Algebraic Formula-Type Processing. These languages are oriented towards the
computational procedures for solving mathematical and statistical problem
Examples
are
·
BASIC (Beginners All Purpose Symbolic Instruction
Code).
·
FORTRAN (Formula Translation).
·
PL/I (Programming Language, Version 1).
·
ALGOL (Algorithmic Language).
·
APL (A Programming Language).
b) Business Data Processing:
·
These languages emphasize their capabilities for maintaining
data processing procedures and files handling problems. Examples are:
·
COBOL (Common Business Oriented Language).
·
RPG (Report Program Generator
b) String and List Processing: These are
used for string manipulation including search for patterns, inserting and
deleting characters. Examples are:
·
LISP (List Processing).
·
Prolog (Program in Logic).
Object Oriented Programming Language
In
OOP, the computer program is divided into objects. Examples are:
·
C++
·
Java
e) Visual
programming language: these are designed for building
Windows-based applications Examples are:
·
Visual Basic
·
Visual Java
·
Visual C
Advantages of High Level Language
Following
are the advantages of a high level language:
·
User-friendly
·
Similar to English with vocabulary of words and symbols
·
Therefore it is easier to learn.
·
They are easier to maintain.
Disadvantages of High Level Language
·
A high-level language has to be translated into the
machine language by a translator and thus a price in computer time is paid.
·
The object code generated by a translator might be inefficient
Compared to an equivalent assembly language program
Creating and Running Programs:
There are four steps in this process.
1. Writing and editing the program using
Text editor (source code).
2. Compile the program using any C
compiler.(.bak file)
3. Linking the program with the required
library modules(object file)
4. Executing the program. (.Exe file)
Creating and Editing a C
Program in C Programming Language compiler:
Writing or creating and editing source
program is a first step in c language. Source
code is written in c
programming language according to the type of problem or
requirement, in any text editor.
Saving C Program in C
Programming Language: Source
code is saved on the
secondary storage. Source code is saved
as text file. The extension of file must be
".c". Example the file name is
"learn c programming language.c"
Compiling C program in C
Programming Language: Computer does not
understand c programming language. It understands only 0 and 1 means machine
language. So c programming
language code is converted into machine
language.
The process of converting source code in to machine code is called compiling.
Compiler is a program that compiles source code. Compiler also detects errors in source
program. If compiling is successful source program is converted into object program. Object program is saved on disk. The extension
of file is ".obj"
Linking in C programming
Language: There are many built in functions
available in c programming language. These functions are also called library
functions. These functions are
stored in different header files.
Loading program: The process of transferring a program from secondary storage
to main memory for execution is called loading a program. A program called loader
does loading.
Executing program: Execution is the last step. In this step program starts
execution. Its instructions start
working and output of the program display on the
screen.
Pseudocode: is an artificial and informal language that helps programmers
develop algorithms. Pseudocode is very similar to everyday English.
Algorithm :
An algorithm is a description of a
procedure which terminates with a result. Algorithm is a step-by-step method of
solving a problem.
Properties of an Algorithm :
1) Finiteness:- An algorithm terminates after a finite numbers
of steps.
2) Definiteness:- Each step in algorithm is
unambiguous. This means that the action specified by the step cannot be
interpreted (explain the meaning of) in multiple ways & can be performed
without any confusion.
3) Input:- An algorithm accepts zero or more inputs.
4) Output:- An algorithm should produce at least one
output.
5) Effectiveness: - It consists of basic
instructions that are realizable. This means that the instructions can be performed by using
the given inputs in a finite amount of time.
Writing an algorithm
An algorithm can be written in English,
like sentences and using mathematical
9formulas. Sometimes algorithm written in
English like language is Pseudo code.
Examples
1)Finding the average of three numbers
1. Let a,b,c are three integers
2. Let d is float
3. Display the message “Enter any three
integers:”
4. Read three integers and stores in a,b,c
5. Compute the d = (a+b+c)/3.0
6. Display “The avg is:” , d
7. End.
n
Example 1: Write an algorithm to determine a student’s final grade and
indicate whether it is passing or failing. The final grade is calculated as the
average of four marks.
Pseudocode::
n
Input a set of 4 marks
n
Calculate their average by summing and
dividing by 4
n
if average is below 50
Print
“FAIL”
else
Print
“PASS”
n
Detailed Algorithm :-
n
Step 1: Input M1,M2,M3,M4
Step 2: GRADE
¬ (M1+M2+M3+M4)/4
Step 3: if
(GRADE < 50) then
Print
“FAIL”
else
Print
“PASS”
endif
Flowcharts :
The pictorial representation of algorithm is called flowchart.
Uses of
flow chart:
1 : flow chart helps to understand the program easily.
2 : as different symbols are used to specify the type of operation
performed, it is easier to understand the complex programs with the help of
flowcharts.
Flowchart Symbols
S.NO |
Description |
Symbols |
||
1 |
Flowlines : These are
the left to right or top to bottom lines connection symbols. These lines
shows the flow of control through the program. |
|
||
2 |
Terminal Symbol : The
oval shaped symbol always begins and ends the flowchart. Every flow chart
starting and ending symbol is terminal symbol. |
End Start |
||
3 |
Input / Output symbol : The
parallelogram is used for both input (Read) and Output (Write) is called I/O symbol.
This symbol is used to denote any function of an I/O device in the program. |
|
||
4 |
Process Symbol : The
rectangle symbol is called process symbol. It is used for calculations and
initialization of memory locations. |
|
||
5 |
Decision symbol : The
diamond shaped symbol is called decision symbol. This box is used for
decision making. There will be always two exists from a decision symbol one
is labeled YES and other labeled NO. |
|
||
6 |
Connectors : The
connector symbol is represented by a circle. Whenever a complex flowchart is
morethan one page, in such a situation, the connector symbols are used to
connect the flowchart. |
|
Algorithm
to find whether a number even or odd:
Step1:
Begin Step1: START
Step2:
Take a number Step2: Read num
Step3:
if the number is divisible by2 then Step3: if(num%2=0) then
print that number is even print num is even
otherwise print that number is odd otherwise
print num is odd
Step4:
End Step4: STOP
(Algorithm
in natural language) (Algorithm by using pseudo
code)
System Development:
Or
Systems Requirements Analysis Design Coding System Test Maintenance
1. Statement of Problem
a)
Working with existing system and using proper questionnaire, the problem should
be explained
clearly.
b)
What inputs are available, what outputs are required and what is needed for
creating workable
solution,
should be understood clearly.
2. Analysis
a)
The method of solutions to solve the problem can be identified.
b)
We also judge that which method gives best results among different methods of
solution.
3. Design
a)
Algorithms and flow charts will be prepared.
b)
Focus on data, architecture, user interfaces and program components.
4. System Test
The
algorithms and flow charts developed in the previous steps are converted into
actual programs in the high level languages like C.
a. Compilation
The
process of translating the program into machine code is called as Compilation.
Syntactic errors are found quickly at the time of compiling the program. These
errors occur due to the usage of wrong syntaxes for the statements.
Eg:
x=a*y+b
There
is a syntax error in this statement, since, each and every statement in C
language ends with a semicolon (;).
b. Execution
The
next step is Program execution. In this phase, we may encounter two types of
errors. Runtime Errors: these errors occur during the execution of the program
and terminate the program abnormally.
Logical Errors:
these errors occur due to incorrect usage of the instructions in the program.
These errors are neither detected during compilation or execution nor cause any
stoppage to the program execution but produces incorrect output.
5.
Maintenance
We are maintenance
the software by updating the information, providing the security and license
for the software.
What is C?
C is a
programming language developed at AT
& T’s Bell Laboratories of USA in 1972.
It was designed and written by Dennis
Ritche. Dennis Ritchie is
known as the founder
of c language.
It was
developed to overcome the problems of previous languages such as B, BCPL etc.
Initially,
C language was developed to be used in UNIX 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.
Historical
developments of C(Background)
Year
|
Language |
Developed
by |
Remarks |
1960 |
ALGOL
|
International
committee |
Too
general, too abstract |
1967 |
BCPL
|
Martin
Richards at Cambridge university |
Could
deal with only specific problems |
1970 |
B
|
Ken
Thompson at AT & T |
Could
deal with only specific problems |
1972 |
C
|
Dennis
Ritche at AT & T |
Lost
generality of BCPL and B restored |
General
Structure of a C program:
/*
Documentation section */
/*
Link section */
/*
Definition section */
/*
Global declaration section */
main()
{
Declaration
part
Executable
part (statements)
}
/*
Sub-program section */
Ø The
documentation section is used for displaying any information about the program
like the purpose of the program, name of the author, date and time written etc,
and this section should be enclosed within comment lines. The statements in the
documentation section are ignored by the compiler.
Ø The link
section consists of the inclusion of header files.
Ø The
definition section consists of macro definitions, defining constants etc,.
Ø Anything
declared in the global declaration section is accessible throughout the
program, i.e. accessible to all the functions in the program.
Ø main() function is mandatory for
any program and it includes two parts, the declaration part and the executable
part.
Ø 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. #include <stdio.h>
2. #include <conio.h>
3.
void main(){
4.
printf("Hello C Language");
5.
getch();
6.
}
#include <stdio.h> includes the standard input output library functions. The printf() function is
defined in stdio.h .
#include <conio.h> includes the console input output library functions. The getch() function is
defined in conio.h file.
void main() The main() function is the entry point of every program in c language. The void keyword specifies that
it returns no value.
printf() The printf() function is used to print data on the console.
getch() The getch() function asks for a single character. Until you press any key, it blocks the screen.
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
- An Identifier can
only have alphanumeric characters( a-z , A-Z , 0-9 ) and underscore( _ ).
- The first character
of an identifier can only contain alphabet( a-z , A-Z ) or underscore ( _
).
- Identifiers are also
case sensitive in C. For example name and Name are
two different identifier in C.
- Keywords are not
allowed to be used as Identifiers.
- No special
characters, such as semicolon, period, whitespaces, slash or comma are
permitted to be used in or as Identifier.
- C’ compiler
recognizes only the first 31 characters of an identifiers.
Ex : Valid Invalid
STDNAME Return
SUB $stay
TOT_MARKS 1RECORD
_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:
auto break case char
const continue default do
double enum else extern
float for goto if
int long return register
signed short static sizeof
struct switch typedef union
unsigned void volatile while
Note: Keywords
we cannot use it as a variable name, constant name etc.
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.
Types |
Data Types |
Basic Data Type |
int, char,
float, double |
Derived Data
Type |
array, pointer,
structure, union |
Enumeration
Data Type |
enum |
Void Data Type |
void |
Note: We call Basic or Primary data
type.
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.
Size and Ranges of Data Types with Type
Qualifiers
Type |
Size (bytes) |
Range |
Control String |
char
or signed char |
1 |
-128
to 127 |
%c |
unsigned
char |
1 |
0
to 255 |
%c |
int
or signed int |
2 |
-32768
to 32767 |
%d
or %i |
unsigned
int |
2 |
0
to 65535 |
%u |
short
int or signed short int |
1 |
-128
to 127 |
%d
or %i |
unsigned
short int |
1 |
0
to 255 |
%d
or %i |
long
int or signed long int |
4 |
-2147483648
to 2147483647 |
%ld |
unsigned
long int |
4 |
0
to 4294967295 |
%lu |
float |
4 |
3.4E-38
to 3.4E+38 |
%f
or %g |
double |
8 |
1.7E-308
to 1.7E+308 |
%lf |
long
double |
10 |
3.4E-4932
to 1.1E+4932 |
%Lf |
Variables
A variable is a name of memory location. It is
used to store data. Variables are
changeable, we can change value of a variable during execution of a program. . It can be reused many times.
Note: Variable are nothing but
identifiers.
Rules to write variable names:
1. A variable name
contains maximum of 30 characters/ Variable name
must be upto 8 characters.
2. A variable name includes
alphabets and numbers, but it must start with an alphabet.
3. It cannot accept
any special characters, blank spaces except under score( _ ).
4. It should not be
a reserved word.
Ex : i rank1
MAX min
Student_name
StudentName class_mark
Declaration of Variables : A variable
can be used to store a value of any data type. The declaration of variables
must be done before they are used in the program. The general format for
declaring a variable.
Syntax : data_type variable-1,variable-2,------, variable-n;
Variables are separated by
commas and declaration statement ends with a semicolon.
Ex :
int x,y,z;
float a,b;
char m,n;
Assigning values to variables : values can
be assigned to variables using the assignment operator (=). The general format
statement is :
Syntax : variable =
constant;
Ex : 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 :
Syntax :
data_type variable = constant;
Ex ; int x=100;
float a=12.25;
char m=’f’;
Types of
Variables in C
There are
many 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.
Note:
constants are also called literals.
C supports several kinds of constants.
CONSTANTS Numeric Constants Character Constants Integer Constants Real Constants Single Character Constants String 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:
An integer constant is a numeric constant (associated
with number) without any fractional or exponential part. There are three types
of integer constants in C programming:
- decimal
constant(base 10)
- octal
constant(base 8)
- hexadecimal
constant(base 16)
For 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.
a) Decimal
Integer value which consist of digits from 0-9.
b) Decimal
Integer value with base 10.
c) Decimal
Integer should not prefix with 0.
d) It
allows only sign (+,-).
e) No
special character allowed in this 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 :
a) it consist of digits from 0 to 7.
b) It should prefix with 0.
c) It allows sign (+,-).
d) No special character is allowed.
EX
: VALID INVALID
0123 123 -> it because no prefix with 0
+0123
0128 -> because digits from 0
to 7.
-0123
3 : Hexadecimal
: An integer constant with base value
16 is called Hexadecimal.
a) It consist of digits from
0-9,a-f(capital letters & small leters.
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
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
Note: E-5 = 10-5
Real Constants : Real constant is base 10 number, which is represented in
decimal 0r scientific/exponential notation.
Real Notation : The real notation is represented by an integer followed by a
decimal point and the fractional(decimal) part. It is possible to omit digits
before or after the decimal point.
Ex : 15.25
.75
30
-9.52
-92
+.94
Scientific/Exponential
Notation:
The general form of Scientific/Exponential notation is
mantisha e
exponent
The mantisha is either a real/floating point number expressed in
decimal notation or an integer and the exponent
is an integer number with an optional sign. The character e separating the mantisha and the exponent can be written in either
lowercase or uppercase.
Ex :
1.5E-2
100e+3
-2.05e2
Character Constant:
Single Character Constant :
A character constant is either a
single alphabet, a single digit, a single special symbol enclosed within single
inverted commas.
a) it is value represent in ‘ ‘ (single
quote).
b) The maximam length of a character
constant can be 1 character.
EX : VALID INVALID
‘a’ “12”
‘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
EX : “rama” , “a” , “+123” , “1-/a”
"good" //string constant
"" //null string constant
"
" //string constant of six white space
"x" //string constant having single character.
"Earth is round\n" //prints string with newline
Escape characters or backslash 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 (?)
k) \\ backslash (\)
Two ways to define constant in C
There are two ways to define
constant in C programming.
- const keyword
- #define preprocessor
1) C const keyword
The const keyword is used to define
constant in C programming.
- const float PI=3.14;
Now, the value of PI variable can't
be changed.
- #include <stdio.h>
- #include <conio.h>
- void main(){
- const float PI=3.14;
- clrscr();
- printf("The value of PI is: %f",PI);
- getch();
- }
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>
- #define PI 3.14
- main() {
- printf("%f",PI);
- }
Output:
3.140000
Formatted
and Unformatted Console I/O Functions.
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. 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.
Standard File |
File Pointer |
Device |
Standard input |
stdin |
Keyboard |
Standard output |
stdout |
Screen |
Standard error |
stderr |
Your screen |
Input / Output functions
are classified into two types
I / O Functions Formated I/O Functions Unformated I/O Functions Input
Output scanf() print() fscanf() fprintf() Input Output getc() putc() getchar() putchar() 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.
Syntax : printf(“control
string “, variable1, variable2, -----------, variablen);
Ex : printf(“%d”,3977); //
Output: 3977
printf() statement another syntax :
Syntax :
printf(“fomating
string”);
Formating string :
it prints all the character given in
doublequotes (“ “) except formatting specifier.
Ex : printf(“ hello “);-> hello
printf(“a”); -> a
printf(“%d”, a); -> a value
printf(“%d”); -> no display
scanf() : input data
can be entered into the computer using the standard input ‘C’ library function
called scanf(). This function is used to enter any combination of input.
Syntax : scanf(“control string “,&var1, &var2,----,
&varn);
The scanf() function is used to read information from the standard input
device (keyboard).
Ex : scanf(“ %d “,&a);->
hello
Each
variable name (argument) must be preceeded by an ampersand (&). The (&)
symbol gives the meaning “address of “ the variable.
Unformatted
I/O functions:
a)
Character I/O
b)
String I/O
a)
character I/O:
1. getchar(): Used to read a character from the standard
input
2. putchar(): Used to display a character to standard
output
3. getch() and
getche(): these are used to take the any
alpha numeric characters from the standard input
getche() read and display the character
getch() only read the single
character but not display
4. putch(): Used to display
any alpha numeric characters to standard output
a)
String
I/O:
1.
gets(): Used for accepting any
string from the standard input(stdin)
eg:gets()
2. puts():
Used to display a string or character array Eg:puts()
3. Cgets():read a
string from the console
eg; cgets(char *st)
4. Cputs():display
the string to the console
eg; cputs(char *st)
OPERATORS AND EXPRESSIONS:
Operators
: An
operator is a Symbol that performs an operation. An operators acts some
variables are called operands to get the desired result.
Ex :
a+b;
Where a,b are operands and
+ is the operator.
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
Relational Operators. A relational operator checks
the relationship between two operands. If the relation is true, it returns 1;
if the relation is false, it returns value 0.
Operands may be variables, constants or expressions.
Relational
operators are used in decision making and loops.
Operator |
Meaning |
Example |
Return value |
< |
is less than |
2<9 |
1 |
< = |
is less than or equal to |
2 < = 2 |
1 |
> |
is greater than |
2 > 9 |
0 |
> = |
is greater than or equal to |
3 > = 2 |
1 |
= = |
is equal to |
2 = = 3 |
0 |
!= |
is not equal to |
2!=2 |
0 |
// C Program to demonstrate the working of relational
operators
#include <stdio.h>
int main()
{
int
a = 5, b = 5, c = 10;
printf("%d == %d = %d \n", a, b, a == b); // true
printf("%d == %d = %d \n", a, c, a == c); // false
printf("%d > %d = %d \n", a, b, a > b); //false
printf("%d > %d = %d \n", a, c, a > c); //false
printf("%d < %d = %d \n", a, b, a < b); //false
printf("%d < %d = %d \n", a, c, a < c); //true
printf("%d != %d = %d \n", a, b, a != b); //false
printf("%d != %d = %d \n", a, c, a != c); //true
printf("%d >= %d = %d \n", a, b, a >= b); //true
printf("%d >= %d = %d \n", a, c, a >= c); //false
printf("%d <= %d = %d \n", a, b, a <= b); //true
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
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.
Operator |
Meaning |
Example |
Return value |
&& |
Logical AND |
(9>2)&&(17>2) |
1 |
|| |
Logical OR |
(9>2) || (17 = = 7) |
1 |
! |
Logical NOT |
29!=29 |
0 |
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.
Op1 |
Op1 ! |
true |
false |
false |
true |
// C Program to
demonstrate the working of logical operators
#include
<stdio.h>
int main()
{
int a = 5, b = 5, c = 10, result;
result = (a = b) && (c > b);
printf("(a = b) && (c > b)
equals to %d \n", result);
result = (a = b) && (c < b);
printf("(a = b) && (c < b)
equals to %d \n", result);
result = (a = b) || (c < b);
printf("(a = b) || (c < b) equals
to %d \n", result);
result = (a != b) || (c < b);
printf("(a != b) || (c < b) equals
to %d \n", result);
result = !(a != b);
printf("!(a == b) equals to %d
\n", result);
result = !(a == b);
printf("!(a == b) equals to %d
\n", result);
return 0;
}
Output
(a = b) && (c
> b) equals to 1
(a = b) && (c
< b) equals to 0
(a = b) || (c < b)
equals to 1
(a != b) || (c < b)
equals to 0
!(a != b) equals to 1
!(a == b) equals to 0
Assignment
Operators.
Assignment operators are used to assign a value (or) an expression (or) a value
of a variable to another variable.
Syntax : variable name=expression (or) value (or) variable
Ex : x=10;
y=a+b;
z=p;
Compound assignment operator:
‘C’ provides compound assignment
operators to assign a value to variable in order to assign a new value to a
variable after performing a specified operation.
Operator |
Example |
Meaning |
+ = |
x + = y |
x=x+y |
- = |
x - = y |
x=x-y |
* = |
x * = y |
x=x*y |
/ = |
x / = y |
x=x/y |
% = |
x % = y |
X=x%y |
// C Program to
demonstrate the working of assignment operators
#include
<stdio.h>
int main()
{
int a = 5, c;
c = a;
printf("c = %d \n", c);
c += a; // c = c+a
printf("c = %d \n", c);
c -= a; // c = c-a
printf("c = %d \n", c);
c *= a; // c = c*a
printf("c = %d \n", c);
c /= a; // c = c/a
printf("c = %d \n", c);
c %= a; // c = c%a
printf("c = %d \n", c);
return 0;
}
Output
c = 5
c = 10
c = 5
c = 25
c = 5
c = 0
Increment
and Decrement Operators /Unary Operators:
Unary operators are having higher priority than the other
operators. Unary operators,
meaning they only operate on a single
operand.
Increment Operator in C Programming
- Increment
operator is used to increment the current value of variable by adding
integer 1.
- Increment
operator can be applied to only variables.
- Increment
operator is denoted by ++.
We have two types of increment operator i.e Pre-Increment and
Post-Increment 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
Post-increment operator is used to increment the value of
variable as soon as after executing expression completely in which post
increment is used. In the Post-Increment value is first used in a expression
and then incremented.
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.
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++;
The syntax of the operators is given below.
++<variable name> --<variable name>
<variable name>++ <variable name>--
The operator ++ adds 1 to the
operand and – subtracts 1 from the operand. These operators in two forms : prefix (++x) and
postfix(x++).
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++ :
4 : x- - :
// C Program to demonstrate the
working of increment and decrement operators
#include <stdio.h>
int main()
{
int a = 10, b = 100;
float c = 10.5, d = 100.5;
printf("++a = %d \n", ++a);
printf("--b = %d \n", --b);
printf("++c = %f \n", ++c);
printf("--d = %f \n", --d);
return 0;
}
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.
- 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.
- As shown in the above image evaluation sequence
of expressions written inside printf will be – i++,++i,i
- After execution we need to replace the output
of expression at appropriate place
No |
Step |
Explanation |
1 |
Evaluate i++ |
At the time of
execution we will be using older value of i = 1 |
2 |
Evaluate ++i |
At the time of
execution we will be increment value already modified after step 1 i.e i = 3 |
2 |
Evaluate i |
At the time of
execution we will be using value of i modified in step 2 |
Postfix and Prefix Expression in Same Statement
#include<stdio.h>
#include<conio.h>
void main() {
int i = 0, j = 0;
j = i++ + ++i;
printf("%d\n", i);
printf("%d\n", j);
}
Output :
2
2
Explanation of Program
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.
1 : question mark (?).
2 : colon ( : ).
Syntax : condition
? exp1 : exp2;
It first evaluate
the condition, if it is true (non-zero)
then the “exp1” is evaluated, if the condition is false (zero) then the
“exp2” is evaluated.
#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 |
^ |
Bitwise XOR |
< < |
Shift left |
> > |
Shift right |
~ |
One’s complement. |
Bitwise AND operator
&
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
________
00001000
= 8 (In decimal)
Example #1:
Bitwise AND
#include
<stdio.h>
int
main()
{
int a = 12, b = 25;
printf("Output = %d", a&b);
return 0;
}
Output
Output
=8
Bitwise OR operator |
The output of bitwise OR is 1 if at least one corresponding bit of two
operands is 1. In C Programming, bitwise OR operator is denoted by |.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise OR Operation of 12 and 25
00001100
| 00011001
________
00011101 = 29 (In decimal)
Example #2: Bitwise OR
#include <stdio.h>
int main()
{
int a = 12, b = 25;
printf("Output = %d",
a|b);
return 0;
}
Output
Output =29
Bitwise XOR (exclusive
OR) operator ^
The result of bitwise XOR operator is 1 if the corresponding bits of two
operands are opposite. It is denoted by ^.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise XOR Operation of 12 and 25
00001100
| 00011001
________
00010101 = 21 (In decimal)
Example #3: Bitwise
XOR
#include <stdio.h>
int main()
{
int a = 12, b = 25;
printf("Output = %d",
a^b);
return 0;
}
Output
Output = 21
Bitwise complement
operator ~
Bitwise compliment operator is an unary operator (works on only one
operand). It changes 1 to 0 and 0 to 1. It is denoted by ~.
35 = 00100011 (In Binary)
Bitwise complement Operation of 35
~ 00100011
________
11011100 = 220 (In decimal)
Twist in bitwise
complement operator in C Programming
The bitwise complement of 35 (~35) is -36
instead of 220, but why?
For any integer n, bitwise complement of n will be -(n+1)
. To understand this, you should have the
knowledge of 2's complement.
2's
Complement
Two's complement is an
operation on binary numbers. The 2's complement of a number is equal to the
complement of that number plus 1. For example:
Decimal
Binary 2's complement
0
00000000 -(11111111+1) =
-00000000 = -0(decimal)
1
00000001 -(11111110+1) =
-11111111 = -256(decimal)
12
00001100 -(11110011+1) =
-11110100 = -244(decimal)
220
11011100 -(00100011+1) =
-00100100 = -36(decimal)
Note:
Overflow is ignored while computing 2's complement.
The bitwise complement
of 35 is 220 (in decimal). The 2's complement of 220 is -36. Hence, the output
is -36 instead of 220.
Bitwise complement of
any number N is -(N+1). Here's how:
bitwise complement of N
= ~N (represented in 2's complement form)
2'complement of ~N=
-(~(~N)+1) = -(N+1)
Example #4: Bitwise
complement
#include
<stdio.h>
int main()
{
printf("complement = %d\n",~35);
printf("complement = %d\n",~-12);
return 0;
}
Output
Complement = -36
Complement = 11
There
are two Bitwise shift operators in C programming:
- Right shift operator
- Left shift operator.
Right Shift Operator
Right shift operator shifts all bits towards
right by certain number of specified bits. It is denoted by >>.
Left Shift Operator
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
Ex :
val(a=3, b=9, c=77, a+c)
First signs the value 3 to a, then assigns 9 to b, then assigns 77 to c,
and finaly80(3+77) to value.
2
) Sizeof Operator : The
sizeof() is a unary operator, that returns the length in bytes o the specified
variable, and it is very useful to find the bytes occupied by the specified
variable in the memory.
Syntax :
sizeof(variable-name);
int a;
Ex : sizeof(a); //OUTPUT-----2bytes
Example
#6: sizeof Operator
#include <stdio.h>
int main()
{
int a, e[10];
float b;
double c;
char d;
printf("Size of int=%lu bytes\n",sizeof(a));
printf("Size of float=%lu bytes\n",sizeof(b));
printf("Size of double=%lu bytes\n",sizeof(c));
printf("Size of char=%lu byte\n",sizeof(d));
printf("Size of integer type array having 10 elements = %lu
bytes\n", sizeof(e));
return 0;
}
Output
Size of int = 4 bytes
Size of float = 4 bytes
Size of double = 8 bytes
Size of char = 1 byte
Size of integer type array having 10
elements = 40 bytes
Expressions
Expressions : An
expression is a combination of operators and operands which reduces to a single
value. An operator indicats an operation to be performed on data that yields a
value. An operand is a data item on which an operation is performed.
A simple expression
contains only one operator.
Ex : 3+5 is a simple expression which
yields a value 8, -a is also a single
expression.
A complex expression
contain more than one operator.
Ex : complex expression is 6+8*7.
Ex ;
Algeberic Expressions C-expression
1 : ax2+bx+c
1: a*x*x+b*x+c
2 : a+bx
2 : a+b*x.
3 : 4ac/b
3 : 4*a*c/b.
4 : x2/y2-1
4 : x*x/y*y-1
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
The
order of evaluation can be changed by putting paranthesis in an expression.
Ex :
9-12/(3+3)*(2-1)
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.
Rules
for Evaluation of Expression :
1 : Evaluate the sub-expression from
left to right. If parenthesized.
2 : Evaluate the arithemetic
Expression from left to right using the rules of precedence.
3 : The highest precedence is given
to the expression with in paranthesis.
4 : When parantheses are used, the
expressions within parantheses assume highest priority.
5 : Apply the associative rule, if
more operators of the same precedence occurs.
Operator Precedence and Associativity :
Every operator has a
precedence value. An expression containing more than one oerator is known as
complex expression. Complex expressions are executed according to precedence of
operators.
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.
The precedence and associativity of various
operators in C.
Operator |
Description |
Precedence |
Associativity |
(
) [
] |
Function
call Square
brackets. |
1 |
L-R
(left to right) |
+ - ++ -- ! ~ * & sizeof |
Unary
plus Unary
minus Increment Decrement Not
operator Complement Pointer
operator Address
operator Sizeof
operator |
2 |
R-L
(right to left) |
* / % |
Multiplication Division Modulo
division |
3 |
L-R
(left to right) |
+ - |
Addition Subtraction |
4 |
L-R
(left to right) |
<< >> |
Left
shift Right
shift |
5 |
L-R
(left to right) |
< <=
> >= |
Relational
Operator |
6 |
L-R
(left to right) |
=
= != |
Equality Inequality |
7 |
L-R
(left to 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
operator |
14 |
R-L
(right to left) |
, |
Comma
operator |
15 |
L-R
(left to right) |
Type Conversion/Type casting:
Type conversion is used to convert
variable from one data type to another data type, and after type casting
complier treats the variable as of new data type.
For example, if you want to
store a 'long' value into a simple integer then you can type cast 'long' to
'int'. You can convert the values from one type to another explicitly using
the cast operator. Type
conversions can be implicit which is performed by the compiler automatically,
or it can be specified explicitly through the use of the cast
operator.
Syntax:
(type_name) expression;
Without Type
Casting:
1.
int f= 9/4;
2.
printf("f : %d\n", f );//Output: 2
With Type
Casting:
1.
float f=(float) 9/4;
2.
printf("f : %f\n", f );//Output: 2.250000
Example:
#include
<stdio.h>
int
main()
{
printf( "%c\n", (char)65 );
getchar();
}
or
Type
Casting - C Programming
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.
Type conversion in c
can be classified into the following two types:
1. Implicit Type Conversion
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;
for(x=97; x<=122;
x++)
{
printf("%c", x); /*Implicit casting from int to char thanks
to %c*/
}
2. Explicit Type Conversion
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;
for(x=97; x<=122;
x++)
{
printf("%c", (char)x); /*Explicit casting from int to char*/
}
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.
All character types to
be converted to integer.
Example
Consider
the following code:
int
x=7, y=5 ;
float
z;
z=x/y;
/*Here the value of z is 1*/
If
we want to get the exact value of 7/5 then we need explicit casting from int to
float:
int
x=7, y=5;
float
z;
z
= (float)x/(float)y; /*Here the value
of z is 1.4*/
Integer
Promotion
Integer promotion is the
process by which values of integer type "smaller" than int or unsigned int are converted either
to int or unsigned int. Consider an example of
adding a character with an integer −
#include
<stdio.h>
main()
{
int i
= 17;
char c = 'c'; /* ascii value is 99 */
int sum;
sum = i + c;
printf("Value of sum : %d\n", sum
);
}
When the above code is
compiled and executed, it produces the following result −
Value of sum : 116
Here,
the value of sum is 116 because the compiler is doing integer promotion and
converting the value of 'c' to ASCII before performing the actual addition
operation.
Usual Arithmetic Conversion
The usual arithmetic conversions are
implicitly performed to cast their values to a common type. The compiler first performs integer
promotion; if the operands still have different types, then they are
converted to the type that appears highest in the following hierarchy –
Comments
Post a Comment