1.3. Hello, World! The minimal C++ program is Click here to view code image int main() { } // the minimal C++ program This defines a function called main, which takes no arguments and does nothing. Curly braces, { }, express grouping in C++. Here, they indicate the start and end of the function body. The double slash, //, begins a comment that extends to the end of the line. A comment is for the human reader; the compiler ignores comments. Every C++ program must have exactly one global function named main(). The program starts by executing that function. The int value returned by main(), if any, is the program’s return value to “the system.” If no value is returned, the system will receive a value indicating successful completion. A nonzero value from main() indicates failure. Not every operating system and execution environment make use of that return value: Linux/Unix-based environments often do, but Windows-based environments rarely do. Typically, a program produces some output. Here is a program that writes Hello, World!: Click here to view code image #include <iostream> int main() { std::cout << "Hello, World!\n"; } The line #include <iostream> instructs the compiler to include the declarations of the standard stream I/O facilities as found in iostream. Without these declarations, the expression Click here to view code image std::cout << "Hello, World!\n" would make no sense. The operator << (“put to”) writes its second argument onto its first. In this case, the string literal "Hello, World!\n" is written onto the standard output stream std::cout. A string literal is a sequence of characters surrounded by double quotes. In a string literal, the backslash character \ followed by another character denotes a single “special character.” In this case, \n is the newline character, so that the characters written are Hello, World! followed by a newline. The std:: specifies that the name cout is to be found in the standard-library namespace (§3.3). I usually leave out the std:: when discussing standard features; §3.3 shows how to make names from a namespace visible without explicit qualification. Essentially all executable code is placed in functions and called directly or indirectly from main(). For example: Click here to view code image #include <iostream> // include ("import") the declarations for the I/O stream library using namespace std; // make names from std visible without std:: (§3.3) double square(double x) // square a double precision floating-point number { return x*x; } void print_square(double x) { cout << "the square of " << x << " is " << square(x) << "\n"; } int main() { print_square(1.234); // print: the square of 1.234 is 1.52276 } A “return type” void indicates that a function does not return a value.