1)
Запустіть наступну програму і подивіться результат:
#include <iostream>
using namespace std;
int main() {
cout << "size of small - " << sizeof(short) << endl;
cout << "size of int - " << sizeof(int) << endl;
cout << "size of long - " << sizeof(long) << endl;
cout << "size of long long - " << sizeof(long long) << endl;
}
У мене наприклад:
Leonids-MacBook-Pro:~ leo$ ./a.out
size of small - 2
size of int - 4
size of long - 8
size of long long - 8
Це все залежить від операційної системи та архітектури (x32 / x64)
Для 16-бітних процесорів int був розміром 2 байти, short - 1 байт, long - 4 байти. Тому в старих книжках можна зустрітити таке.
long long - тип в новому стандарті C++. Особливість не може бути менше 8 байт.
Короче кажучи це все залежить від ОС та архітектури
2) string - це не тип, а контейнер (клас). У нього велика кількість методів та з ним зручно працювати.
char* або char[] - використовуються в C для збереження послідовності символів (масиви символів), такі собі псевдо-рядки.
З string'ами дуже зручно працювати. Не потрібно слідкувати за пам'ятю.
Звичайні послідовності символів звичайно ж будуть давати кращу продуктивність (performance), але використання new, delete та операції над ними напрягають дуже.