1

Тема: Типи даних в C++

У мене кілька питань.

В C++ є наступні типи даних:
- short (short int)
- int
- long (long int)
- long long (long long int)
Яка між ними різниця?

Рядки:
Яка різниця між типом string та char *?

#include <iostream>
#include <string>

using namespace std;

int main() {

    char *s1 = "s1";    
    string s2 = "s2";
    
    cout << s1 << endl << s2 << endl;
        
}

2 Востаннє редагувалося Ярослав (08.06.2013 10:25:00)

Re: Типи даних в C++

char *s1 = "s1";  

Таким чином ви створюєте покажчик на рядкову константу s1

    string s2 = "s2";

Так ви створюєте змінну типу string, яка ініціалізується зі значенням s2
Типи short (short int), int, long (long int), long long (long long int)
Відрізняються між собою кількістю пам'яті, яка виділяється для змінних їхніх типів.

3

Re: Типи даних в C++

konus777 написав:

У мене кілька питань.

В C++ є наступні типи даних:
- short (short int)
- int
- long (long int)
- long long (long long int)
Яка між ними різниця?

int: розмір пам'яті: машинне слово; діапазон значень: [-32 768; 32 767]
short int: розмір пам'яті: 2; діапазон значень: [-32 768; 32 767]
long int: розмір пам'яті: 4; діапазон значень: [-2 147 483 648; 2 147 483 647]
long long int я вперше бачу, та думаю, там все аналогічно

Рядки:
Яка різниця між типом string та char *?

#include <iostream>
#include <string>

using namespace std;

int main() {

    char *s1 = "s1";    
    string s2 = "s2";
    
    cout << s1 << endl << s2 << endl;
        
}

елементарно: char - один символ; string - кілька символів

Подякували: konus7771

4

Re: Типи даних в C++

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 та операції над ними напрягають дуже.

Подякували: konus7771

5

Re: Типи даних в C++

Replace написав:

Короче кажучи це все залежить від ОС та архітектури =)

Я б сказав - від компілятора=))
--------------------------------------------------------------------
Також того, щоб дізнатись межі типу можна використати

#include <limits>
const int min_int = std::numeric_limits<int>::min();
const int max_int = std::numeric_limits<int>::max();
Подякували: konus7771

6

Re: Типи даних в C++

int на різних машинах має різний розмір залежно від розрядності. Для x32 це буде 4 (short - 2, long - 4, long long - 8 ).

string - це клас STL, обгортка над char[].

Yola написав:

Я б сказав - від компілятора=))

Від архітектури та ОС. Ключ - у розрядності.

7

Re: Типи даних в C++

Bartash написав:

Від архітектури та ОС. Ключ - у розрядності.

Хм.. За певну суму я можу написати компілятор у якого розмір інта буде 128 біт як на 32 так і на 64 розрядній системах. Те що компілятори зазвичай підлаштовуються під систему, то інше. Гадаю у них є опції для розміру інта.

Подякували: konus7771

8

Re: Типи даних в C++

Від цільової архітектури, так домовилися?

Подякували: konus7771

9

Re: Типи даних в C++

Yola написав:

Хм.. За певну суму я можу написати компілятор у якого розмір інта буде 128 біт як на 32 так і на 64 розрядній системах. Те що компілятори зазвичай підлаштовуються під систему, то інше. Гадаю у них є опції для розміру інта.

Можете - не заперечую. А нащо? :)

koala написав:

Від цільової архітектури, так домовилися?

А які ще бувають архітектури за даною ознакою?

10

Re: Типи даних в C++

Bartash написав:
koala написав:

Від цільової архітектури, так домовилися?

А які ще бувають архітектури за даною ознакою?

Може бути ще емулятор чогось під іншу розрядність та ОС чи взагалі віртуальна машина. Наприклад, CLI.

Подякували: konus7771

11 Востаннє редагувалося Очі.завидющі (09.06.2013 05:45:10)

Re: Типи даних в C++

Віртуальна машина поняття розпливчасте - спочатку Java була віртуальною машиною, а згодом і процесори для Java байт коду зробили.

Подякували: konus7771

12

Re: Типи даних в C++

Всі дякую, розібрався.