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)

 

 

 

 

 

 

 

 

 

 

 

 

FLOWCHART :       

 

                                 

                          

                                       

 

                                                

 

 

 

 

                              

                                                                                                                

 

 

                                         

 

 

 

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

  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.
  4. Keywords are not allowed to be used as Identifiers.
  5. No special characters, such as semicolon, period, whitespaces, slash or comma are permitted to be used in or as Identifier.
  6. 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.

  1. const keyword
  2. #define preprocessor
  3.  

  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

 

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

  1. Increment operator is used to increment the current value of variable by adding integer 1.
  2. Increment operator can be applied to only variables.
  3. 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++ : Post increment, first do the operation and then increment.

4 : x- -  : Post decrement, first do the operation and then decrement.

 

// 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.

  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

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