Мы наконец-то начинаем говорить про C++. Начать, разумеется, надо с базовых вещей, которые появились ещё в C. И вообще текущая тема может быть по праву названа как введением в C, так и введением в C++.
Однако C и C++ — это разные языки:
- Их разрабатывают разные люди с разными целями.
- Они имеют разные компиляторы, несмотря на то, что обычно компании, имеющие компиляторы C++ также имеют компилятор C. Эти компиляторы имеют общий код, но они всё же не
одинаковы — этот самый общий код также используется и для Go, и для D, и для Ada... Исключением из этого правила является Clang, где просто
if
'ами различаются C и C++. Правда, там ещё и Objective-C и нечто ещё... - Стили программирования на C и C++ кардинально отличаются, если вы пишете на них одинаково - вы дурачок.
- C не является подмножеством C++, случайная программа на C вообще не факт что будет корректна в C++. Правда, обычно придётся менять её не очень сильно. Примером такого отличия является код вида
a ? b : c = 42
. В C — это(a ? b : c) = 42
, а в C++ —a ? b : (c = 42)
.
Целочисленные типы записываются так:
Размер | знаковый | беззнаковый |
---|---|---|
short | short | unsigned short |
(обычный) | int | unsigned |
long | long | unsigned long |
long long | long long | unsigned long long |
Причем порядок записи не имеет значения: int signed
, signed int
, int
- одно и то же.
Размер | 32 bit | win64 | linux64 |
---|---|---|---|
char | 1 байт | 1 байт | 1 бай |
short | 2 байта | 2 байта | 3 байта |
int | 4 байта | 4 байта | 4 байта |
long | 4 байта | 4 байта | 8 байт |
long long | 8 байт | 8 байт | 8 байт |
Ни в коем случае не надо рассуждать таким образом, что:
вот мне надо 4 байта - возьму int, а теперь мне надо 8 байт - возьму long.
Нужно использовать хедер cstdint
Он предоставляет типы:
- int8_t, uint8_t
- int16_t, uint16_t
- int32_t, uint32_t
- int64-t, uint
Какой тип использовать для индексации в массиве, поэтому мы пишем:
for(size_t i = 0; i < 100; i++){
do_something();
}
формально можно сказать, что у этой структурки только 5 полезных байт. В sizeof мы дополняем до 8
короч я ушел спать