Tuesday, December 2, 2014

Functions, Side effects Understanding scope in c++ pro



Converting value-returning functions to void functions
 
#include 
#include
int inc (int);
void main () 
{
  int i = 3;
  int j;
  j = inc (i);
  cout << j << endl;
}
int inc (int a) 
{
  return(a+1);
}
 
 
Bad style, side-effects, value-returning
 
#include 
#include
int counter = 0;
int add (int&, int&);
void main () 
{
  int i, j, sum;
  i = 7; j = 17;
  sum = add(i,j);
  cout << "counter = " << counter << ", i = " << i << ", j = " << j 
    << ", sum = " << sum << endl;
  i = 7; j = 17;
  sum = add(i,j);
  cout << "counter = " << counter << ", i = " << i << ", j = " << j 
    << ", sum = " << sum+i+j+counter << endl;
  i = 7; j = 17;
  sum = i+j+counter;
  cout << "counter = " << counter << ", i = " << i << ", j = " << j 
    << ", sum = " << sum+add(i,j) << endl;
  i = 7; j = 17;
  sum = add(i,i);
  cout << "counter = " << counter << ", i = " << i << ", j = " << j 
    << ", sum = " << sum << endl;
}
int add (int& a, int& b) 
{
  int temp, sum;
  sum = a+b;
  temp = a;
  a = b+1;
  b = temp+1;
  counter = counter + 1;
  return(sum);
}
 
Understanding scope
 
#include 
#include
void f ();
int i = 0;
void main () 
{ 
  cout << i << endl;  
  int i = 1;
  cout << i << endl;
  { 
    int i = 2;
    cout << i << endl;
    { 
      int i = 3;
      cout << i << endl;
      { 
   int i = 4;
   cout << i << endl;
      }
      cout << i << endl;
    }
    cout << i << endl;
  }
  cout << i << endl;
  f(); f(); f();
}
void f () 
{
  cout << i << endl;
  static int i = 5;
  cout << i++ << endl;
}

No comments:

Post a Comment