Kodewick
Lesson 1 of 30Contents

Hello, World!

Lesson 1 of 30 · Part 1 · Getting started · about 15 minutes

Your first C++ program does one thing: it shows a line of text on the screen. Every piece of code on this page compiles and runs right in your browser: press Run, change something, and run it again.

main.cpp
1#include <iostream>2 3int main() {4    std::cout << "Hello, World!\n";5    return 0;6}
Output
Hello, World!

Here is what each part does:

PartWhat it is
#include <iostream>Brings in the tools for input and output. std::cout is one of them.
int main()The program starts running at main. Every C++ program has one.
{ }The curly braces hold what main does.
std::cout << "...";Sends the text in quotes to the screen. \n is a new line.
return 0;Tells the system the program finished without trouble.

What compiling is

C++ is a compiled language: your code first goes to a compiler (g++, for example), which translates it into a program the computer can run directly. Only then does it run. Here, when you press Run, the page compiles it for you, with the same results as g++.

The compiler is strict. Leave out one semicolon and it refuses to compile, and tells you what is wrong:

main.cpp
1#include <iostream>2 3int main() {4    std::cout << "No semicolon\n"5    return 0;6}
Output
main.cpp: In function 'int main()':
main.cpp:4:34: error: expected ';' before 'return'
    4 |     std::cout << "No semicolon\n"
      |                                  ^
      |                                  ;
    5 |     return 0;
      |     ~~~~~~

Read the line with error: in it: main.cpp:4:34 is the file name, line 4, column 34. After error: comes what is wrong. The compiler even points to where the ; belongs. Fix it and run it again.

Tip: C++ error messages can get long. Read the first error: first; the ones after it are often caused by it.

Line by line

The statements in main run from top to bottom, one after another, and each one ends with a semicolon. Press Step to watch it go line by line.

main.cpp
1#include <iostream>2 3int main() {4    std::cout << "First line\n";5    std::cout << "Second line\n";6    std::cout << "Third line\n";7    return 0;8}
Output
First line
Second line
Third line

cout and <<

std::cout is the output stream: whatever you send to it with << goes to the screen. One statement can send several things in a row, and numbers work too:

main.cpp
1#include <iostream>2 3int main() {4    std::cout << "Apples: " << 3 << "\n";5    std::cout << "Total: " << 3 + 4 << "\n";6    return 0;7}
Output
Apples: 3
Total: 7

std::cout does not start a new line by itself. Without \n, the next output carries on along the same line:

Guess first

How many lines does this show?

1#include <iostream>2 3int main() {4    std::cout << "A";5    std::cout << "B\n";6    std::cout << "C\n";7    return 0;8}

You will also see std::endl in other code. It ends the line too (and flushes the output right away). This course writes \n (from lesson 2 on as '\n'), which is enough almost everywhere.

What std:: means

cout belongs to the standard library, whose names all live in std. std::cout means "the cout from std". Leave out std:: and the compiler doesn't know the name:

main.cpp
1#include <iostream>2 3int main() {4    cout << "Hi\n";5    return 0;6}
Output
main.cpp: In function 'int main()':
main.cpp:4:5: error: 'cout' was not declared in this scope; did you mean 'std::cout'?
    4 |     cout << "Hi\n";
      |     ^~~~
      |     std::cout

g++ even suggests the fix: did you mean 'std::cout'?. Many tutorials write using namespace std; at the top so they can leave std:: out. This course writes std:: every time: in bigger programs it avoids clashes between names, and you always see where a name comes from.

Special characters

Inside a string, a backslash \ with the character after it stands for a character that is hard to type directly:

You writeYou get
\na new line
\ta tab (jumps to the next column stop)
\"a double quote
\\a backslash
main.cpp
1#include <iostream>2 3int main() {4    std::cout << "Name\tScore\n";5    std::cout << "Ana\t95\n";6    std::cout << "She said \"hi\"\n";7    std::cout << "Path: C:\\code\n";8    return 0;9}
Output
Name	Score
Ana	95
She said "hi"
Path: C:\code

Comments

Comments are for people; the compiler skips them. From // to the end of the line is a comment, and so is everything between /* and */, even across several lines.

main.cpp
1#include <iostream>2 3int main() {4    // say hello first5    std::cout << "Hello\n";6    /* not this one for now:7    std::cout << "Goodbye\n";8    */9    return 0;10}
Output
Hello

main and return 0

The program starts at the first statement in main and ends at return 0;. The 0 means "all went well"; other programs can see this number and tell whether it went wrong. Every program in this course is written this way, with return 0; at the end of main.

main.cpp
1#include <iostream>2 3int main() {4    std::cout << "Start\n";5    return 0;6    std::cout << "This line never runs\n";7}
Output
Start

The program ends at return, so the last line shows nothing.

Practice

Write the code, then press Check. A hint costs nothing; the answer is there when you need it.

Exercise 1

Your first program

Make the program show Hello, C++!, then a new line.

It should print
Hello, C++!
exercise1.cpp
1#include <iostream>2 3int main() {4 5    return 0;6}
Output
Press Run or Ctrl+Enter
Exercise 2

One statement, two lines

Use only one std::cout statement to show these two lines.

It should print
Apples
Bananas
exercise2.cpp
1#include <iostream>2 3int main() {4    std::cout << "Apples";5    return 0;6}
Output
Press Run or Ctrl+Enter
Exercise 3

Fix it: a missing name

This program doesn't compile. Fix it so it shows Price: 25.

It should print
Price: 25
exercise3.cpp
1#include <iostream>2 3int main() {4    cout << "Price: " << 25 << "\n";5    return 0;6}
Output
Press Run or Ctrl+Enter

What you learned

  • A C++ program starts running at main; #include <iostream> brings in std::cout.
  • C++ is compiled: first it is compiled, then it runs. A compile error gives the line and the reason; read the first one first.
  • std::cout << ... shows text and numbers; several << in a row show several things.
  • Output doesn't start new lines by itself: write \n. \t, \" and \\ stand for special characters.
  • Names from the standard library start with std::; // and /* */ are comments; return 0; means all went well.