lasd/teoria/esempi_professore/examples/basictypes/main.cpp

132 lines
4.5 KiB
C++

#include <cmath>
#include <iostream>
using namespace std;
int f() { return 0; };
string g() { return string("This is a very long long long long long long string..."); }
string h() { return string("Another quite long long long long long long string..."); }
int main() {
// Slide 1
bool bvar = true; // false
cout << "Boolean variable: " << bvar << "; " << !bvar << endl;
char cvar1 = 'A'; // 126
// char cvar1 = 126;
unsigned char cvar2 = 'Z'; // 126
cout << "Char variable: " << cvar1 << "; " << endl;
cout << "Unsigned char variable: " << cvar2 << "; " << endl;
// short svar1 = 'A';
short svar1 = -120; // 'A'
unsigned short svar2 = -120; // 'A'
cout << "Short variable: " << svar1 << "; " << endl;
cout << "Unsigned short variable: " << svar2 << "; " << endl;
// Other basic types: [unsiogned] int, long (long int), long long (long long
// int), float, double, long double. Synonyms for some compilers (e.g., gnu):
// uint for unsigned int and ulong for unsigned long.
uint uivar1 = pow(2, 32) - 120;
uint uivar2 = -120;
ulong ulvar1 = pow(2, 32) - 120;
ulong ulvar2 = -120;
cout << "Unsigned int variable: " << uivar1 << " == " << uivar2 << "; " << endl;
cout << "Unsigned long variable: " << ulvar1 << " != " << ulvar2 << "; " << endl;
float vecvar[3] = { 0.1, 2, 5.7 };
// double vecvar[3] = { 0.1, 2, 5.7 };
cout << "Double vector variable: ";
for (uint i = 0; i < 3; i++) { cout << vecvar[i] << ' '; };
cout << endl;
long matvar[3][2] = { { 0, 1 }, { 2, 3 }, { 4, 5 } };
cout << "Long matrix variable: " << endl;
for (uint i = 0; i < 3; i++) { for (uint j = 0; j < 2; j++) { cout << matvar[i][j] << ' '; }; cout << endl; };
const double pi = 3.141592;
// pi = 3.141592;
cout << "Double constant: " << pi << "; " << endl;
// // Slide 2
//
// char cvar = 'a';
// char* cpvar = &cvar;
// cout << "Char variable and its pointer: '" << cvar << "' == '" << *cpvar << "'; " << endl;
// cvar++;
// cout << "Char variable and its pointer: '" << cvar << "' == '" << *cpvar << "'; " << endl;
//
// int ivar = 'a';
// int* ipvar = &ivar;
// cout << "Int variable and its pointer: " << ivar << " == " << *ipvar << " != " << ipvar << "; " << endl;
// ivar++;
// cout << "Int variable and its pointer: " << ivar << " == " << *ipvar << " != " << ipvar << "; " << endl;
//
// const char ccon = 'a';
// const char* cpcon = &ccon;
// // char* cpcon = &ccon;
// // const char* const cpcon = &ccon;
// cout << "Char constant and its pointer: '" << ccon << "' == '" << *cpcon << "'; " << endl;
// // ccon++;
// cpcon++;
// cout << "Char constant and its pointer: '" << ccon << "' (possibly)!= '" << *cpcon << "'; " << endl;
// cpcon--;
// cout << "Char constant and its pointer: '" << ccon << "' == '" << *cpcon << "'; " << endl;
//
// char cnew = 'z';
// void* vptr = &cnew;
// cout << "Char constant and its pointer: '" << cvar << "' == '" << *cpvar << "'; " << endl;
// // cvar = *vptr;
// // cvar = *((char*) vptr); // C-like cast
// cvar = *(static_cast<char*>(vptr)); // C++ static cast
// cout << "Char constant and its pointer: '" << cvar << "' == '" << *cpvar << "'; " << endl;
// // cout << *vptr << ";" << endl;
//
// uint uivar = 25;
// cout << "Unsigned integer variable: " << uivar << "; " << endl;
// uivar = *((uint*) vptr); // C-like cast
// // uivar = *(static_cast<uint*>(vptr)); // C++ static cast
// // uivar = *((uint*) cpcon); // C-like cast
// // uivar = *(static_cast<uint*>(cpcon)); // C++ static cast
// cout << "Unsigned integer variable: " << uivar << "; " << endl;
// // Slide 3
//
// int ivarx = 0;
// int& irvarx = ivarx;
// cout << "Int variable and its reference: " << ivarx << " == " << irvarx << "; " << endl;
// irvarx++;
// cout << "Int variable and its reference: " << ivarx << " == " << irvarx << "; " << endl;
//
// //int& ivary = 0;
// const int& ivary = 0;
//
// int ivarz = f();
// // int& ivarz = f();
// // Slide 4
//
// string stringa1 = g(); // Copia del valore.
// // string& stringa1 = g(); // Riferimento lvalue a un rvalue (valore temporaneo). Errato!
// // string&& stringa1 = g(); // Riferimento rvalue.
// // string stringa1 = std::move(g()); // Spostamento del valore.
//
// cout << "1) " << stringa1 << endl;
//
// // string&& stringa2 = h();
// //
// // cout << "2) " << stringa2 << endl;
// //
// // stringa1 = std::move(stringa2);
// //
// // cout << "3) " << stringa1 << endl;
// // cout << "4) " << stringa2 << endl;
return 0;
}