//: C09:MacroSideEffects.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
#include "../require.h"
#include <iostream>
using namespace std;/* La riga seguente definisce una macro: tutte le volte che il preprocessore incontra nel codice 'BAND(x)' lo sostituisce tale riga con '(((x)>5 && (x)<10) ? (x) : 0)' che testa se la variabile 'x' è maggiore di 5 e minore di 10 e, in quel caso viene restituito 'x' stesso altrimenti 0.*/
#define BAND(x) (((x)>5 && (x)<10) ? (x) : 0)
int main()
{
for(int i = 4; i < 11; i++)
{
int a = i;
cout << "a = " << a << endl << '\t';
cout << "BAND(++a)=" << BAND(++a) << endl;
cout << "\t a = " << a << endl;}
} ///:~