#include #include using std::cout; using std::cin; using std::endl; using std::setprecision; //serve using std::setw; //serve //using namespace std; int square ( int ); // prototipo della funzione square (di un intero con ritorno di un intero double square ( double ); // prototipo della funzione square (di un double con ritorno di intero) int a=2; //var globale //double a =2.6; //var globale double b=3.234; //var globale int M=55; int main() { int M =6; //var locale; e' solo nello scope della funzione cout << " M locale al main = " << M << endl; cout << " M globale = " << ::M << endl; // :: Scope Resolution Operator cout << "a =" << a << ", Quadrato di a =" << square(a) << endl; cout << "b =" << b << ", Quadrato di b =" << square(b) << endl; cout << "b =" << b << ", Quadrato di b =" << setprecision(5) << square(b) << endl; cout << "b =" << b << ", Quadrato (int) di b =" << int(square(b)) << endl; cout << "b =" << b << ", Quadrato (int) di b =" << (int)square(b) << endl; // cout << "quadrato di a = " << l << endl; // Errore l non dichiarata in questo scope return 0; } int square (int y) { int l; l = y*y; //var locale cout <<"Sono in square; l = " << l << endl; return l; //la funzione fa una copia di y che riporta alla funzione chiamante } double square (double y){ double l; l=y*y; return y*y; } //g++ -o scope scope.cc //./scope // M locale al main = 6 // M globale = 55 //Sono in square; y = 4 //a =2, Quadrato di a =4 //a =2a nn e' stato cambiato da square //b =3.234, Quadrato di b =10.4588 //b =3.234, Quadrato di b =10.459 //b =3.234, Quadrato (int) di b =10 //b =3.234, Quadrato (int) di b =10