On this page I will list some of the C and C++ compilers that I have used and add some recommendations.

A compiler is, in short, a tool that translate your source code into executeable code - a program. Most compilers understand both C and C++, the only exception that I know of is LCC, which is C only. For this reason they are often called C/C++ compilers.

The compilers I will list here is all for Windows, as that is what I use. On Linux you will normaly use GCC, which often is preinstalled on your system.

The most simple for of compiler is a commandline compiler, that is a program run from the commandline, from a .bat file or from a makefile. Even if it can be a bit difficult to use a commandline compiler is is often usefull to know how to. All the compilers I know can be used as a commandline compiler.

There is (at least) tree GCC versions for windows, as other GNU tools they are all free.
MinGW is probably the one used most these days, it is small and easy to use.
Cygwin is another often used version, its unix/linux emulation is a bit better than that of MinGW. It comes with a complete bash shell, so if you want your Windows box to behave as a Linux bux it is a must. Just remember to read there licence before you use it.
DJGPP was, as far as i know, the first GCC running windows. It can create true 32-bit DOS program but is otherwice not very interesting

Borland has also a free command line compiler. It is easy to use and my favorite. They have a guide here to learn how to set it up.

Digital Mars is a not so often used compiler it is fairly easy to use. It can create 16 bits DOS applications with real hardware access, so if you like to to toy with assembler and interrupts, it is the one.

The next group of compilers are IDE. An IDE is a advanced editor from which you can control and run your compiler. A IDE can also be used to debug your program, that is, make it stop at certain points, inspect the content of your variables, step through it, and run again.

Code::Blocks is a IDE, which as default use MinGW as compiler, you can download and install them as one packet. It can also use other compilers such as Borland. It is easy to use, powerfull so it is my recommendation for the beginner.
Dev-Cpp also known as Dev-C++ or Bloodshed is popular IDE. It uses MinGW as compiler, you can download them as one packet from the site. It is good but I prefer Code::Blocks over Dev-Cpp.
Both Dev-Cpp and Code::Blocks are free.

The third groop is RAD tools. In a RAD tool you can do what you can do in a IDE and you can "draw" your windows forms/dialog boxes by Drag and Drop. They are also called Designers. Some think that RAD tools makes it easier to create Windows apps.

LCC is a simpel and free RAD tool, its easy to use, but the compiler is only C, i.e. no C++.

Borland C++ Builder is in somes opinion THE RAD tool. It can do alot, easy to use, but is very pricy, starting at $1,090.00.

Microsoft has also a RAD tool. As IDE it is fine, but if you want to use it as RAD tool you have to switch to .net and C++/CLI, which in no way is C++. If you want to create .net applications i suggest that you switch to C#. If you want to create plain Win32-API programs in Visual Studio you need to download and install "Windows Platform SDK".

I write all my code in Wain, compile most of them with BorlandC++, if I need to use a debugger i start up an ancient Visual C++ 6.0 or Code::Blocks.