Learning C/C++ Step-By-Step

01. Step-by-Step C/C++ --- Introduction

Many people are really interested in learning and implementing C/C++ programs on their favorite platforms like DOS/Windows or Linux. If you are the one looking for a step-by-step guide to get started, this tutorial is for you. Let me know your comments on  my tiny attempt to serve the community.



I. About C

    1. What is C ?
    2. Development of C language
    3. C as a general purpose Language
    4. History of C
    5. Features of C

II. Programming Basics

  1. Components of a program
  2. Constants
  3. Data types
  4. Numeric Data Type
  5. Non-Numeric Data Type
  6. Integer Data Type
  7. Real Data Type
  8. Logical Data Type
  9. Enumerated Data Type


Introduction to Language & Expressions

What is C?

C is a compiler based programming language supports both high level and low level statements to interact directly with the hardware.


Development of C Language

The C programming language evolved from a succession of programming languages developed at Bell Laboratories in early 1970s. It was not until the late 1970s that this programming language began to gain widespread popularity and support. This was because until that time C compilers were not readily available for commercial use outside of Bell Laboratories.

The C language was the outcome of Dennis Ritchie’s work on a project in Bell Laboratories, to invent a suitable high level language for writing an Operating System which manages the input and output devices of a computer, allocates its storage and schedules the running of other programs.

UNIX operating system is written in the C language. Hence the Unix Operating system has C as its standard programming language. In fact over 90% of the operating system itself is written in the C language. So originally C language was designed and implemented on the Unix Operating System.


C as a general purpose Language

C is a high level, procedural/structured, and general purpose programming language and resembles few other high level languages such as Fortran, Pascal, and PL/1. However, we cannot call the C language as a “Purely High Level Language”.

C stands somewhere between the high-level languages meant for carrying on special activities and the low level languages such as assembly language of a machine because of some features like “System Independence”, “Limited Data Type”, “High Flexibility”, it is considered as a powerful language C has also become popular because of its portability across systems.


History of C

Year Language Developed by Remarks
1960 ALGOL International Committee Too general, Too abstract
1963 CPL Cambridge University Hard to learn, Difficult to implement
1967 BCPL Martin Richards Could deal with only specific problems
1970 B Ken Thompson AT & T Bell Labs Could deal with only specific problems
1972 C Dennis Ritchie AT & T Bell Labs Lost generality of BCPL and B restored
Early 80’s C++ Bjarne Stroustrup AT & T Introduces OOPs to C.


Features of C

-    Simple, versatile, general purpose language
-    Programs are fast and efficient
-    Has got rich set of operators
-    more general and has no restrictions
-    can easily manipulates with bits, bytes and addresses
-    Varieties of data types are available
-    separate compilation of functions is possible and such functions can be called by any C program
-    block-structured language
-    Can be applied in System programming areas like operating systems, compilers & Interpreters, Assemblers etc.,


II. Programming Basics

Components of a program

1.    Constants
2.    Variables
3.    Operators
4.    Statements

So, before writing serious programming we must be clear with all the above components of programs. According to above example every program is a set of statements, and statement is an instruction to the computer, which is a collection of constants, variables, operators and statements.



A constant is a fixed value, which never altered during the execution of a program.
Constants can be divided into two major categories:

1.    Primary Constants
2.    Secondary Constants


Data Types

The kind of data that the used variables can hold in a programming language is known as the data type.

Basic data types are as follows:

1.    Numeric Data Type
2.    Non-Numeric Data Type
3.    Integer Data Type
4.    Real Data Type
5.    Logical Data Type
6.    Enumerated Data Type

1.    Numeric Data Type: Totally deals with the numbers. These numbers can be of integer (int) data type or real (float) data type.

2.    Non-Numeric Data Type : Totally deals with characters. Any character or group of characters enclosed within quotes will be considered as non-numeric or character data type.

3. Integer Data Type :   Deals with integers or whole numbers. All arithmetic operations can be achieved through this data type and the results are again integers.

4.    Real Data Type :  deals with real numbers or the numeric data, which includes fractions. All arithmetic operations can be achieved through this data type and the results can be real data type.

5.    Logical or Boolean Data Type :  can hold only either of the two values TRUE or FALSE  at a time. In computer, a 1 (one) is stored for TRUE and a 0 (zero) is stored for FALSE.

6. Enumerated Data Type :  Includes the unstructured data grouped together to lead to a new type. This data type is not standard and us usually defined by user.
    Week_days = { “sun”, “mon”, “tue”, “wed”, “thu”, “fri”, “sat” };
    Directions = {”North”, “East”, “West”, “South” };

The following table shows the standard data types with their properties.


Range: low

Range: high

Digits of precision

Bytes of memory









-32, 768

32, 767


2 (on 16 bit processor)



-2,147, 483, 648

2, 147, 483, 647





3.4 x 10-38

3.4 x 1038





1.7 x 10-308

1.7 x 10308




long double

3.4 x 10-4932

3.4 x 10-4932




NOTE: The required ranges for signed and unsigned int are identical to those for signed and unsigned short. On compilers for 8 and 16 bit processors (including Intel x86 processors executing in 16 bit mode, such as under MS-DOS), an int is usually 16 bits and has exactly the same representation as a short. On compilers for 32 bit and larger processors (including Intel x86 processors executing in 32 bit mode, such as Win32 or Linux) an int is usually 32 bits long and has exactly the same representation as a long.

I want you to refer this page for more information on int type for different processors:

 Ref: http://www.jk-technology.com/c/inttypes.html

Share this page:

19 Comment(s)

Add comment


From: at: 2009-01-09 15:11:23

The tutorial looks so great. But I have some doubts. Why do you use "clrscr()" function and conio.h library, if you are using the C/C++ standard? (I found that in the pages number 4 and 5, but that is as far as i got).

From: at: 2009-01-20 16:25:53

I tried to lead learners from learning C to C++, so the pages 4 and 5 reflects most of the usage of C language, so it introduces users to learn about other header files.

From: Shantanu Goel at: 2009-01-08 04:44:05

Great tutorial Ganesh. And here is a link for people who finish your tutorial and want to learn a bit about how to make their code secure and optimized: Safer Code - Secure Coding in C/C++ This has a lot of stuff regularly published to cater to various security and performance related issues with C/C++ and anyone can follow it easily at a gradual pace.

From: Anonymous at: 2010-02-01 06:01:52

Very nice!

From: pickatutorial at: 2010-10-09 12:52:44

Great Work. Keep it up.

From: TodaysTech at: 2011-07-12 21:31:29

If anyone is interested, I have an ongoing blog that is covering the transition from the Business world to the Programming world.  Since it's from my own perspective, I think it can be easy to read and relate to for most first timers.


From: Crosility at: 2012-12-06 23:44:36

In the chart, it says 'vhar', not 'char'.

From: Jason at: 2013-04-16 14:58:31

Why using conio.h ?   It is not part of C standard, C++ standard, nor is it part of any Linux or Unix libraries.  

The inclusions of Microsoft specific libraries in chapters 4 & 5 have me doubting the validity the rest of the tutorial (learning c/cpp on Linux).

The tutorial is well written, however,  but I think it would be more appropriate on a .Net or Msdn blog. 

Thanks Ganesh!

From: Anonymous at: 2009-09-01 11:56:38


\* 0001_hello.c *\ and  \* 0001_hello.cpp *\


/* 0001_hello.c */ and /* 0001_hello.cpp */



From: Scott_R at: 2012-01-03 22:24:55

The numbering for the examples is off by one.

For example:

"10. Write a program to find the total and average marks of a student"

/* 11_stud.c */

From: Erica at: 2012-12-31 19:56:21

In 11_stud.c

avtg = total / 3;

should be

avg = total / 3;

Also the clrscr() function won't compile in g++. If others need you can add // to the start of the line and the line will become a comment.

From: Bob at: 2011-09-09 12:50:09

Ex 13 :

  if ( age >= 13 and age <= 19 ) printf("Teen Age");
  if ( age >= 20 and age <= 35 ) printf("Young Age");
  if ( age >= 36 and age < 50 ) printf("Middle Age");

should read as :

      if ( age >= 13 && age <= 19 ) printf("Teen Age");
      if ( age >= 20 && age <= 35 ) printf("Young Age");
      if ( age >= 36 && age < 50 ) printf("Middle Age");

From: Anonymous at: 2009-06-25 12:57:51

Example 14 would be less ....rectangular and much more triangular if, instead of

for (j=1;j<=5;j++)

one had

for (j=i; j<=5;j++)

From: Snehal at: 2009-06-15 07:00:15

In the difference between union and structure ,the names are misplaced ...means in union , structure points are placed and viceversa... Make it correct

From: bzero in c programming at: 2014-07-30 10:54:51


There is a bug in the number 4 example. You will get compilation error while running this program you will get a compilation error like below:

 binaryover.cpp:31:11: error: expected ‘;’ before ‘t1’

binaryover.cpp:32:6: error: ‘t3’ was not declared in this scope

binaryover.cpp:32:11: error: ‘t1’ was not declared in this scope

binaryover.cpp:32:16: error: ‘t2’ was not declared in this scope

Because you are using "using namespace std;" but in the standard library there is a function named time (). So, to solve the problem, you can change the name of the function time ()  to any other name like time1 (), then you will be able to run your code without any error. 

From: Abhijeet at: 2009-01-11 01:25:52

Though i haven't done it myself, mingw32 can create win32 executables from linux. As its description says "Minimalist GNU win32 (cross) compiler, A Linux hosted, win32 target, cross compiler for C/C++, Freedom through obsolescence. Those who still really need to can now build windows executables from the comfort of Debian." You could check it out.

From: Paul at: 2009-01-07 22:40:39

Thanks, this is a nice tutorial, I'm actually a php programer and I saw a lot similar with php's language, but I have a question:

Can I compile a c++ program under linux to make a .exe to run on windows and viceversa?

And how to do that if it is possible?

From: dbrion at: 2009-06-30 11:58:40

"Can I compile a c++ program under linux to make a .exe to run on windows "

Yes :

I confirm the last post and cross compilers can natively be found with recent Fedora (and any linux distribution, messeems!) The way all the stuff necessary could be downloaded and made working can be found with adaptations of :


(one just has to stop at "make xtools": they are downloaded and put into a proper place).

Else, if you like linux and have "only"  Windows, you can use cygwin (avoids dualbooting or switching to another computer)  with the sources (it is very rare that sources need to be different between both systems, they use the same compiler -gcc/g+++- and almost the same include file names.... ) ...


"and viceversa"

No (not because linux executables do not have a .exe suffix!):

 but you can edit/compile/test your program(s) under cygwin (google search can find it) until it works and port it (i.E the source, the compilation  and test scripts) to Linux (there is almost no effort, apart the efforts linked with different disk nomenclatures, of course).

 Else, unless emulating linux with vmplayer/qemu/vbox -all these emulators are Windows ported-? but it is more complicated than C/C++....

From: Iftekhar Ahmed at: 2010-05-14 19:31:55


Its relly helpful, I have 48 Hrs for my Exams..........................

Thanks for posting ............


Iftekhar Ahmed