I l@ve RuBoard Previous Section Next Section

5.15 Answers to Chapter Questions

Answer 5-1: The programmer accidentally omitted the end-comment symbol ( */ ) after the comment for height. The comment continues onto the next line and engulfs the width variable declaration. Example 5-13 shows the program with the comments underlined.

Example 5-13. Triangle area program
#include <iostream>

int  height;   /* The height of the triangle
int  width;    /* The width of the triangle*/
int  area;     /* Area of the triangle (computed) */

int main(  )
{
    std::cout << "Enter width and height? ";
    std::cin >> width >> height;
    area = (width * height) / 2;
    std::cout << "The area is " << area << '\n';
    return (0);
}

Some people may think that it's unfair to put a missing comment problem in the middle of a chapter on basic declarations. But no one said C++ was fair. You will hit surprises like this when you program in C++ and you'll hit a few more in this book.

Answer 5-2: The problem is with the way we specified the element of the array: array[2,4]. This should have been written: array[2] [4].

The reason that the specification array[2,4] does not generate a syntax error is that it is legal (but strange) C++. There is a comma operator in C++ (see Chapter 29), so the expression 2,4 evaluates to 4. So array[2,4] is the same as array[4]. C++ treats this as a pointer (see Chapter 15), and what's printed is a memory address, which on most systems looks like a random hexadecimal number.

Answer 5-3: The problem is that the Zip code 02137 begins with a zero. That tells C++ that 02137 is an octal constant. When we print it, we print in decimal. Because 021378 is 111910 the program prints:

New York's Zip code is: 1119
    I l@ve RuBoard Previous Section Next Section