1.3 A First C Program: P 6 P, P S, A
1.3 A First C Program: P 6 P, P S, A
Second, it is robust. Over the last thirty-five years C has evolved into a stable and
mature language that is controlled by a formal standard, and guided by a wealth of
practical experience. You can find information about the standard at http://www.
open-std.org/jtc1/sc22/wg14/, and purchase a copy of the current version,
ISO/IEC 9899:2011 at http://www.ansi.org. (The previous version is ISO/IEC
9899:1999, and before that the ANSI C standard was published in 1989, and made
an ISO standard in 1990.)
Third, it is appropriate to a wide range of applications. For example, much of the
Unix operating system is written in C, and so are a wide range of programming and
other software tools. Commercial software houses use it for product development,
and hobbyists use it for their personal computing. And because its lineage stretches
back to Fortran, a wide range of software old, but perhaps still useful can be
rewritten in C and used if necessary, with a minimum of translation effort.
Finally, as a procedural language, there is a close mapping between constructs in
the language and the facilities in the hardware it executes on. Because of this close
correspondence, a great deal of general-purpose programming work is carried out
using C and related languages programs are likely to be efficient when written in C.
Advances both in programming language technology and in hardware have reduced
this link in recent years, but there is still a sense in which C is close to the raw
machine.
There are better languages for particular applications just as a carpenter has
many saws at their disposal. But if you are going to use only one saw, it needs to be
a general-purpose one, a jack of all trades. And that is the role filled by C.
C is a robust, standardized, portable, and widely available language
suitable for a broad range of computing, engineering, and scientific
calculations.
1.3
A first C program
Having convinced you that C is a useful tool in your future career, it is time to look
at a C program:
/* A first C program. Just writes a message, then exits.
Alistair Moffat, [email protected], July 2002.
*/
#include <stdio.h>
int
main(int argc, char *argv[]) {
printf("Hello world!\n");
return 0;
}
The program in the box doesnt do much, nevertheless, it is always a useful task to
get this program working on any new computer system you encounter, and to also
write the equivalent program in any new language you must master.
1.3
A FIRST C PROGRAM
PAGE 7
There are several points to note. First, the text between the /* and */ pair is
discarded by the C system, and is purely for the benefit of any human readers it
is a comment. Comments can be placed at almost any point of a program, and once
the /* is read, all further text is discarded until a */ combination is encountered.
Unfortunately, comments cannot appear within other comments there is no sense of
nesting. Later C standards also allow a form of comment where any text that follows
a // pair in a line is disregarded, but this is not legal in ANSI (C90) C programs.
Programs typically commence with a comment that records the author of the
program, a history of any modifications to the program and a set of associated dates,
and a summary of the operation of the program. For brevity the programs shown in
this book contain relatively terse commenting, and you should be more expansive in
the software that you write.
Second, most of the rest of the program is a kind of standard recipe that is used
without discussion for the next few chapters the #include line and int main
lines are going to appear exactly the same way in every program, as are the return
statement and final closing brace.
In fact, the only interesting part in this program is the printf line, which says
that the sequence of characters or string Hello world! is to be written to the
output. The next box shows a possible interaction with this program on a computer
running the Unix operating system, assuming that the programs lines have been
typed into a file called helloworld.c using a program known as an editor. The
word mac: is the prompt from the computers operating system, and indicates that
user input is expected. The commands beside each prompt (ls, which lists the files
in the current directory, and gcc, which compiles the program) were typed by an
imaginary user; the other lines resulted from the execution of those commands.
mac: ls
helloworld.c
mac: gcc -Wall -ansi -o helloworld helloworld.c
mac: ls
helloworld helloworld.c
mac: ./helloworld
Hello world!
mac:
The gcc command compiles the C source code in file helloworld.c using the C
compiler distributed by the Free Software Foundation2 , and creates an executable
file called helloworld that contains machine-language instructions corresponding
to the C source program. On a Windows system the executable would have a .exe
filename extension, but in the Unix and MacOS contexts it is conventional to create executables that have no extension. All of the examples in this book presume a
Unix/MacOS environment, as shown in the example. The last command executes the
compiled program, and the Hello world! output message appears.
Figure 1.2 shows a second C program, and an execution of it. This one reads
a set of numbers, and calculates and prints their sum. It is presented to give you a
feel for what a more substantial program looks like, and you are not expected to have
2
See http://www.gnu.org.