Написанное в данной статье верно для копилятора gcc.
Структура программы:
Необходимый набор в шаблоне прогораммы;
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <'...'> //заголовок Using namespace '...';//пространство имён int main() //обязательные функция main { '...' //тело программы return 0; }// конец тела программы |
Комментарии в С++:
/* — начало комментария
*/— конец комментария
//— однострочный комментарий
Пример:
1 2 3 |
/*данная надпись это комментарий*/ //данная надпись это комментарий |
Заголовок программы:
#include <‘имя заголовка’>
(в поздних версиях компилятора #include<‘имя заголовочного файла .h’> устаревший стиль)
Пример:
1 |
#include<iostream>//включает в программу заголовок iostream |
Пространство имени (|):
using namespace ‘название пространства имён’;
Пример:
1 |
using namespace std; //Эта инструкция помещает std в глобальное пространство имён |
Макросы:
#define ‘имя макроса’ ‘значение макроса’
Пример:
1 |
#define SIZE 100 //Связывает идентификатор SIZE со значением 100 |
Таблица типов:
Тип <code>[attr width="100px"] | Размер байт |
Описание | Диапазон |
---|---|---|---|
Char signed char |
1 | Символьный тип. Содержит один символ или строку символов. Каждый символ представляется одним байтом. Компилятор различет как отдельные следующие типы: char, singned char и unsigned char | От 127 до 128 |
unsigned char | 1 | Символьный тип. Каждый символ пердставляется одним байтом. | От 0 до 255 |
short signed short |
2 | Целый тип. Сокращённое обозначение типа short int. Длина этого типа вне зависимости от используемого компилятора больше или равно длине типа char и меньше или равно типа int. | От -32768 до 32767 |
unsigned short | 2 | Без знаковый целый тип. | От 0 до 65535 |
int signed int |
4 | Целый тип. Длина этого типа вне зависимости от используемого компилятора всегда больше или равна длине значения типа short int. | От -2147483648 до 2147483647 |
unsigned int | 4 | Без знаковый целый тип. | От 0 до 4294967259 |
long signed long |
4 | Целый тип сокращенное обозначение типа long int. | От -2147483648 до 2147483647 |
unsigned long | 4 | Без знаковый целый тип. | От 0 до 4294967259 |
float | 4 | Тип данных с плавающей точкой. | От 3.4E-38 до 3.4+38 |
double | 8 | Тип данных с плавающей точкой двойной точности. Длина типа double вне зависимости от используемого компилятора всегда больше или равна длине float и короче или равна длине типа long double. | От 1.7E-308 до 1.7+308 |
long double | 8 | Тип данный с плавающей точкой двойной точности, длина которой равна длине значения типа double. Типы double и long double имеют одинаковое представление но компилятор трактует из как различные типы. | От 1.7E-308 до 1.7+308 |
_intn | n/8 | Целый тип, размер в битах которого определяется значением n; и может быть равным 8, 16, 32 и 64 битам. |
Инициализация типов:
‘имя типа’ ‘имя переменной’;
Инициализировать переменную можно в любом месте.
Пример:
1 |
int a;//переменная a инициализирована как тип int; |
Таблица диапазонов:
Диапазон шестнадцатиричных констант. | Диапазон восьмеричных констант | Тип. |
---|---|---|
0x0-0x7FF | 0-077777 | int |
0x8000-0xFFFF | 0100000-0177777 | unsigned int |
0x10000-0x7FFFFFFF | 0200000-017777777777 | long |
0x80000000-0xFFFFFFFF | 020000000000-037777777777 | unsigneg long |
Консольный ввод и вывод:
#include <iostream>
<<-это оператор вывода.
>>-это оператор ввода.
count <<‘выводимая строка’;
cin >>‘имя переменной’;
Пример:
1 2 3 4 5 6 7 8 |
#include<iostream> using namespace std; int main (){ cin>>n>>k;//Вводится переменные n и k в консоли. Count<<'значение перерменной: '<<n;//Выводится строка 'значение переменной: ', а потом данные из переменной n } |
printf(‘строка вывода с кодами типов переменных ‘ ,’ссылки на переменные записанные в той же последовательности’)
scanf(‘коды переменных с разделителями’, ‘ссылки на переменные записанные в той же последовательности’)
Коды типов:
Код | Значение |
---|---|
%d, %i | Десятичное знаковое числo. |
%o | Восьмеричное без знаковое число. |
%u | Десятичное без знаковое число. |
%x, %X | Шестнадцатиричное число. x- нижний регистр букв(abcdef), X- верхний регистр букв(ABCDEF). |
%f, %F | Числа с плавающей запятой. |
%e, %E | Числа с плавающей запятой в экспоненциальной форме записи (0.1e+13). e- символ «e» в нижнем регистре, E — символ «E» в верхнем регистре. |
%g, %G | Числа с плавающей запятой. |
%a, %A | Число с плавающей запятой в шестнадцатеричном виде. |
%c | Вывод символа с кодом. |
%s | Вывод строки с нулевым заершающим байтом. |
%S | Тоже, что и %s с модицикатором длины l. |
%p | Вывод указателя. |
%n | Запись по указателю. |
%% | Символ для вывода знака процента. |
Спецификаторы для %d, %i, %o, %u, %x, %X
Спецификатор | Тип |
---|---|
отсутсвует | int или unsigneg int |
l | long int или unsigned long int |
hh | Аргумент int или unsigned int. Приведение к типу signed char или unsigned char. |
h | Аргумент int или unsigned int. Приведение к типу short int или unsigned short int. |
ll | long long int или unsigned long long int |
j | intmax_t или uintmax_t |
z | size_t |
t | ptrdiff_t |
L | __int64 или unsigned __int64 |
Унарные опеарации:
Операция | Описание |
---|---|
— | арифметическое отрицание. |
~ | побитовое логическое отрицание. |
! | логическое отрицание. |
* | разадресация (косвенная адресация). |
#171;amp;« | вычисление адреса. |
+ | унарный плюс. |
++ | увеличение. |
— | уменьшение. |
sizeof | размер |
Таблица операций:
Знак операции | Операция | Группа операций |
---|---|---|
* | Умножение | Мультипликативные<code>[attr rowspan="3"] |
/ | Деление | |
% | Остаток от деления | |
+ | Сложение | Аддитивные<code><code>[attr rowspan="2"] |
— | Вычитание | |
#171;lt;<« | Сдвиг в лево | Операция сдвига <code>[attr rowspan="2"] |
#171;gt;>« | Сдвиг в право | |
#171;lt;« | Меньше | Операция отношения <code>[attr rowspan="6"] |
#171;gt;« | Больше | |
#171;lt;=« | Меньше или равно | |
#171;gt;=« | Больше или равно | |
== | Равно | |
!= | Не равно | |
#171;amp;« | Поразрядное И | Поразрядные операции <code>[attr rowspan="3"] |
| | Поразрядное ИЛИ | |
^ | Поразрядное исключающее ИЛИ | |
#171;amp;&« | Логическое И | Логические операции <code>[attr rowspan="2"] |
|| | Логическое ИЛИ | |
, | Последовательное вычисление | Последовательные вычисления |
= | Присваивание | Операции присваивания <code>[attr rowspan="11"] |
*= | Умножение с присваиванием | |
/= | Деление с присваиваниеме | |
%= | Остаток от деления с присваиванием | |
-= | Вычитание с присваиванием | |
+= | Сложение с присваиванием | |
#171;lt;<=« | Сдвиг в лево с присваиванием | |
#171;gt;>=« | Сдвиг в право с присваиванием | |
#171;amp;=« | Поразрядное И с присваиванием | |
|= | Поразрядное ИЛИ с присваиванием | |
^= | Поразрядное исключающее ИЛИ с присваиванием |
Таблица управляющих последовательностей:
Управляющая последовательность | Наименования | Шеснадцатеричная замена |
---|---|---|
\a | Звонок | 007 |
\b | Возврат на шаг | 008 |
\t | Горизонтальная табуляция | 009 |
\n | Переход на новую строку | 00A |
\v | Вертикальная табуляция | 00B |
\r | Возврат каретки | 00C |
\f | Перевод формата | 00D |
\» | Кавычки | 022 |
\' | Апостроф | 027 |
\0 | Ноль-символ | 000 |
#171;\\#187; | Обратная дробная черта | 05C |
\ddd | Символ набора кодов ПЭВМ в восьмеричном представлении. | |
\xddd | Символ набота кодов ПЭВМ в шестнадцатеричном представлении. |
Функции:
Описание функции:
‘тип данных которые возвращает функция’ ‘имя функции’ (‘переменные которые использует функция’)
{
операторы;
}
Адресация к функциям:
‘имя функции’(‘переменные которые использует функция’);
Пример:
1 2 3 4 5 6 7 8 9 |
void init(); //функция init не возвращает переменную оно присваивает глобальной переменной i значение 0 { i=0; } init();//вызов функции. |
Операторы ветвления:
Оператор «if», «else»:
if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор,
если ложно, то программа выполняется дальше.*/
‘оператор’;
if (‘логическое выражение’) /*если логическое выражение истинно, то выполняется оператор1,
если ложно, то выполняется оператор2.*/
‘оператор1’;
else
‘оператор2’;
Пример:
1 2 3 4 5 6 7 |
if (n!=100) //проверяется условие 'n не равно 100' cout<<"n не равно 100 \n";//если условие верно, то выводится строка "n не равно 100" else cout<<"n равно 100 \n"; //если условие не верно, то выводится строка "n равно 100" |
Оператор «?»:
‘логическое выражение’ ? ‘выражение1’:‘выражение2’;
Если значение логического выражения истинно, то вычисляется выражение1, в противном случае вычисляется выражение2.
Пример:
1 |
count << n == 2 ? "да" : "нет"; //если n=2 то в консоль выводится "да" в противном случае "нет" |
Оператор «switch»:
switch(‘выражение целого типа’)
{
case ‘значение1’ :
‘последовательность операторов1’
break;
case ‘значение2’ :
‘последовательность операторов2’
break;
…
case ‘значение n’:
‘последовательность операторовn’
break;
default
/*ветку default можно не описывать. Она выполняется, если ни один из вышестоящего выражения не удовлетворено*/
‘последовательность операторовn+1’;
}
Пример:
1 2 3 4 5 6 7 8 9 10 11 |
switch(n) { case 1: cout<<"один";//если n=1 то выводится строка "один" case 2: cout<<"два";//если n=2 то выводится строка "два" default : cout<<"не один и не два";//если n равно другому числу, то выводится строка "не один и не два" } |
Операторы цикла:
Оператор «while»:
while (‘логическое выражение’) //цикл с проверкой условия на верху
‘оператор’;
Пример:
1 |
while (n<100) ++n; //Пока n меньше 100 прибавлять 1. |
Оператор «do..while»:
do
оператор;
while (‘логическое выражение’); //Цикл условия проверки внизу
Пример:
1 2 3 4 5 |
do n--; while('n>0'); //Пока n больше нуля повторять процедуру |
Оператор «for»:
for(‘инициализация’; ‘проверка’; ‘новое_значение’)
‘оператор’;
Пример:
1 |
for(i=0; g[i]=0; i++);//В начале i=0 и пока g[i]!=0, к i прибавляется 1 и выполняется пустой оператор ; |
Оператор «;»:
; /*Пустой оператор применяется когда синтаксис языка требует присутствие оператора, однако по логике программы оператор должен отсутствовать.*/
Пример:
1 |
for(i=0; g[i]=0; i++);//В начале i=0 и пока g[i]!=0, к i прибавляется 1 (оператор после оператора for() не нужен) |
Массивы:
Описание массивов:
‘тип данных’ ‘имя массива’ [‘размер массива’];
Адресация к массивам:
‘имя массива’ [‘значение индекса’];
Пример:
1 2 3 |
int mas[255];//Описывается массив целых чисел mas размер его 255 элементов (первый элемент 0) mas[5]=0; //6 элементу массива массива mas присваивается значение 0 |
Константы:
‘тип’ ‘имя константы’ = ‘значение константы’; //Описание константы
Пример:
1 2 3 |
int a=100, c=50; //Описываются две константы a,C. a равна 100, а c равна 50 |
Классы:
Объявление классов:
class ‘имя класса’{
‘закрытые функции и переменные класса’;
public:
‘имя класса’(‘список параметров’); //Конструктор
~‘имя класса’(); //Деструктор
‘открытые функции и переменные класса’;
} ‘список объектов’;
Определение функции-члена:
‘тип возращаемого значения’ ‘имя класса’::‘имя функции’ (‘список параметров’)
{
‘тело функции’;
}
Определение конструктора:
‘имя класса’::‘имя класса’ (‘список параметров’)
{
‘тело конструктора’;
}
Определение деструктора
‘имя класса’::~‘имя класса’ (‘список параметров’)
{
‘тело деструктора’;
}
Объявление класса:
‘имя класса’ ‘имя объекта’(‘список параметров’);
Обращение к членам класса:
‘имя класса’.‘член класса’;
‘имя класса’->‘член класса’;
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
class myclass{ //Класс с именем myclass int a; //Закрытый элемент класса public: myclass(int b); //Конструктор void set_a (int num);//Отрытые элементы класса }; void myclass::set_a(int num) //определение функции-члена set_a класса myclass { a = num; } void myclass::myclass(int b) //определение конструктора класса myclass { a = b; } myclass clas1(4),clas2(2); //Объявление классов clas1, clas2 типа класса myclass clas1.set_a(5); // Обращение к члену класса |
Структуры:
Объявление структур:
struct ‘имя структуры’{
‘имя структуры’(‘список параметров’);//Конструктор
~‘имя структуры’(); //Деструктор
‘открытые функции и переменные структуры’;
private:
‘закрытые функции и переменные структуры’;
} ‘список объектов’;
Определение функции-члена, конструктора, деструктора, объявление структуры, обращение к членам структуры такие же как у класса.
Встраиваемые функции:
inline ‘тип возращаемого значения’ ‘имя функции’(‘список параметров’)
{
‘тело функции’;
}
Пример:
1 2 3 4 5 6 7 |
inline int even(int x) { return !(x%2); } |
Встраиваемые функции в объявлении класса:
Объявление функции:
class …
…
public:
‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’){‘тело функции’;}
…
};
Пример:
1 2 3 4 5 6 7 8 9 |
class samp { int i,j; public: int devisible() {return !(i%j);} //Встраиваемая функция }; |
Дружеские функции:
class ‘имя класса’{
…
public:
friend ‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’);
};
‘тип возвращаемого значения’ ‘имя функции’ (‘список параметров’);
{
‘тело функции’
}
Пример:
1 2 3 4 5 6 7 |
class myclass{ public: friend int istfactor (myclass ob); }; |
1. Точка с запятой после using namespace std не нужна;
2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std.
А так, неплохой краткий справочник по синтаксису=)
Здравствуйте.
Большое спасибо, что вы захотели сделать мой справочник лучше, это мне очень льстит.
>1. Точка с запятой после using namespace std не нужна;
К сожалению многие компиляторы с вами не согласяться. Возможно вы имели ввиду конструкцию:
namespace std
{
…
}
Тогда да, точка с зяпятой после неё дейтсвительно не нужна.
Или можете сказать название компилятора или IDE, где это работает?
>2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
Да, косяк поправил.
>3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
посмотрел на Courier, стало скучнее. 🙂 Лан, пусть дети привыкают.
4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
>> поменял на точку и стрелочку.
>> 5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std.
Убрал слова «в поздних версиях компилятора». В данное время это вызывает смущение у людей.
То, что он прешёл из C оно не отменяет «устаревший стиль», это и было «в поздних версиях компилятора». Объясню, я хотел этим сказать себе, что данный стиль объявления библиотек использовать не стоит, так как он пришёл из «прошлого» и сейчас есть механизмы намного лучше.
>А так, неплохой краткий справочник по синтаксису=)
И ещё раз спасибо, что обратили внимания на данную статью.
Ещё одна проблема:
n=2 ? str=’да’ : str=’нет’;
некорректно.
Используй следующее:
str = (n == 2 ? «да» : «нет»);
Обрати внимание, что строки-константы заключаются в двойные кавычки.
Весь тернарный оператор возвращает либо часть между символами «?» и «:», либо часть после символа «:». Возвращать результат операции присваивания является избыточным, как в твоём примере.
Сорре, что так много написал, кратко просмотрел, просто хотелось, чтобы справочник был лучше, он же вылез одним из первых в google-поисковике, а значит меньше ошибок должно быть, особенно таких критических.
Я очень люблю фидбеки. Так что извинятся вообще не стоит. 🙂
здесь был вопрос в понятности этого написания для не подготовленного человека. 🙂
здесь str = (n == 2 ? «да» : «нет»); сильно много равно рядом, и глазу не за что зацепиться 🙂 решил разбавить написал:
count << n == 2 ? "да" : "нет";
Привет мне нужна помощь с программой C ++
круто продолжай в том же духе
здравствуйте а есть подобный справочник в екселе? я с радостью бы скачал
Оператор «count» вывода написан правильно?