Type system (or a lack of one?) in C++

#include <iostream>  // need this header file to support the C++ I/O system
using namespace std; // telling the compiler to use namespace "std",
// where the entire C++ library is declared.

int main()
{
  int n = 5, m = 3;
  int *p = &n; // p is a pointer to int, points to n
  int *q = &m; // q is a pointer to int, points to m

  *p = 6; // changing n via p
  cout << "n = " << n << endl; // printing n
  q = p; // copied the address from p to q
  cout << "*q = " << *q << endl; // printing what q points to

  m = 6;
  q = &m;
  cout << "Below 1 represents true, 0 represents false " << endl;
  cout << "m == n: " << (m == n) << endl;
  cout << "*p == *q: " << (*p == *q) << endl;
  cout << "p == q: " << (p == q) << endl;

  // Booleans are not a separate type in C++,
  // they are integers: 0 = false, any other value means true
  // Boolean operations are applicable to integers (and chars)
  cout << "true = " << true << endl;
  cout << "false = " << false << endl;
  if (2) cout << "2 means true" << endl;
  if (!0) cout << "0 means false" << endl;
  if ('A') cout << "characters with non-zero ASCII code are true, too" << endl;
  if (! '\0') cout << "end of string character '\\0' means false" << endl;
  if (('?' - 6) || !89) cout << "('?' - 6) || !89 - Huh? That's an integer, too?" << endl;

  const int size = 3;
  int A[size];
  // array elements are not initialized
  cout << "Printing uninitialized array..." << endl;
  for (int i = 0; i < size; ++i) {
    cout << A[i] << endl;
  }

  // going through the array using pointers
  for (p = A; p < A + size; p++) {
    *p = 0;
  }

  cout << "Printing the array initialized to 0s..." << endl;
  for (int i = 0; i < size; i++) {
    cout << A[i] << endl;
  }

  // All of these are the same:
  cout << "A[2] = " << A[2] << endl;
  cout << "*(A + 2) = " << *(A + 2) << endl;
  cout << "2[A] = " << 2[A] << endl;

  return 0;

}

This is an example from CSci 4651 course.

The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.