Ключевые слова языка Visual C++
|
__аsm
|
dllimport2
|
__int8
|
naked2
|
__basedl
|
__except
|
__intl6
|
__stdcall
|
__cdecl
|
__fastcall
|
__int32
|
thread2
|
__declspec
|
__finally
|
__int64
|
__try
|
__dllexport2
|
__inline
|
__leave
|
Auto
|
Double
|
Int
|
struct
|
Break
|
Else
|
Long
|
switch
|
Case
|
Enum
|
Register
|
typedef
|
Char
|
Extern
|
Return
|
union
|
Const
|
Float
|
Short
|
unsigned
|
Continue
|
For
|
Signed
|
void
|
Default
|
Goto
|
Sizeof
|
volatile
|
Do
|
If
|
Static
|
while
|
Типы данных языка С++
|
Вид переменной
|
Ключевые слова
|
Примечание
|
Целые со знаком
|
int
long, long int
short, short int
|
Основной тип целых чисел
Длинное целое – могут иметь целое как минимум такого же размера, как самое большое int и, возмоно,больше
Короткое целое – могут иметь целое не больше самого маленького int а, возможно, и меньше.
|
Целые без знака
|
unsigned,
unsigned int
unsigned long,
unsigned int long
unsigned short,
unsigned int short
|
Имеют только нулевые и положительные значения. Они не могут быть больше самого большого возможного положительного числа. Числа таких типов подчиняются законам арифметики по модулю 2".
|
Символы
|
Char
unsigned char
|
Это типографские знаки, такие как А, $, 7 или %, а также специальные
Управляющие символы.
|
Числа с плавающей точкой
|
Float
double,
long float
|
Числа с плавающей точкой обычной точности.
Числа с плавающей точкой двойной точности.
|
Нестандартные типы данных, поддерживаемые Visual C++
|
Тип данных
|
Размер (в байтах)
|
Диапазон значений
|
__int8
|
1
|
от-128 до 127
|
__intl6
|
2
|
от –32768 до 32767
|
__int32
|
4
|
от –2147483648 до 2147483647
|
__int64
|
8
|
Приблизительно +/-9Е 18
|
Целые константы
|
Тип
|
Синтаксическое правило
|
Пример
|
Десятичный
|
Первая цифра 1-9, следующие цифры 0-9
|
77
-512
77385L
|
Шестнадцатеричный
|
Начинается с 0x или 0X; следующие цифры 0-9, a-f или A-F
|
0x4D
-0Х200
0x12e49
|
Восьмеричный
|
Начинается с 0; следующие цифры 0-7
|
0115
-01000
017067 L
|
Операции над указателями
|
Операция
|
Комментарии
|
ptr1= =ptr2
|
Сравнение на "равенство"
|
ptr1 != ptr2
|
Сравнение на "неравенство"
|
Ptr1 < ptr2
|
Сравнение на "меньше"
|
рtr1<= ptr2
|
Сравнение на "меньше или равно"
|
Рtr1 > ptr2
|
Сравнение на "больше"
|
ptr1>= ptr2
|
Сравнение на "больше или равно"
|
ptr1 - ptr2
|
Вычисление числа элементов массива между ptr1 и ptr2.
|
ptr1+ int_val
|
Вычисление указателя, отстоящего от ptr1на int_val"вверх"
|
ptr1 - int_val
|
Вычисление указателя, отстоящего от ptr1 на int_val "вниз"
|
ptr1++ (++ptr1)
|
Увеличение значения указателя на единицу
|
ptr1-- (--ptr1)
|
Уменьшение значения указателя на единицу
|
Арифметические операции
Операция
|
Описание
|
+
|
Прибавляет величину, находящуюся справа, к величине, стоящей слева
|
++
|
Унарная операция сложения. Прибавляет 1 к значению переменной, стоящей слева (постфиксная форма) или справа (префиксная форма)
|
--
|
Унарная операция вычитания. Она аналогична операции ++, но вычитает 1.Также имеет две формы
|
-
|
Вычитает величину, находящуюся справа, из величины, указанной слева
|
-
|
Унарный минус. Изменяет знак величины, стоящей справа
|
*
|
Умножает величину справа на величину, находящуюся слева
|
/
|
Делит величину, стоящую слева, на величину справа. Если оба операнда целые числа, то результат усекается
|
%
|
Дает остаток от деления величины слева на величину, стоящую справа, допустима только для целых чисел.
|
Операции отношения
Операция
|
Описание
|
Операция
|
Описание
|
<
|
Меньше
|
>=
|
Больше или равно
|
<=
|
Меньше или равно
|
>
|
Больше
|
==
|
Равно
|
!=
|
Не равно
|
Логические операции
Операция
|
Описание
|
&&
|
Логическое умножение (операция И). Результат равен "1" тогда и только тогда, когда оба операнда отличны от нуля, и "О" в противном случае.
|
||
|
Логическое сложение (операция ИЛИ). Результат равен "1", если хотя бы один из операндов отличен от нуля, и "О" в противном случае.
|
I
|
Логическое отрицание (операция НЕ). Результат имеет значение "истина", если операнд имеет значение "ложь", и наоборот.
|
Операции сдвига
Операция
|
Описание
|
<<
|
Сдвигает разряды левого операнда влево на число позиций, задаваемое правым операндом. Освобождающиеся позиции заполняются нулями, а разряды, сдвигаемые за старший разряд левого операнда, теряются
|
>>
|
Сдвигает разряды левого операнда вправо на число позиций, задаваемое правым операндом. Разряды, сдвигаемые за младший разряд левого операнда, теряются. Для чисел типа unsigned позиции, освобождающиеся слева, заполняются нулями. Для чисел со знаком заполнение зависит от реализации, а в Visual C++ заполнение осуществляется нулями
|
Операции присваивания
Операция
|
Описание
|
+=
|
Прибавляет величину, находящуюся справа, к величине, стоящей слева, и записывает результат в переменную, стоящую слева
|
-=
|
Вычитает величину, находящуюся справа, из величины, указанной слева, и записывает результат в переменную, стоящую слева
|
*=
|
Умножает величину справа на величину, находящуюся слева, и записывает результат в переменную, стоящую слева
|
/=
|
Делит величину, стоящую слева, на величину справа, и записывает результат в переменную, стоящую слева, если оба операнда — целые числа, то результат усекается
|
%=
|
Дает остаток от деления величины слева на величину, стоящую справа, и записывает результат в переменную, стоящую слева. Допустима только для целых чисел
|
&=
|
Выполняет поразрядную операцию И над величинами и записывает результат в переменную, стоящую слева
|
|=
|
Выполняет поразрядную операцию ИЛИ над величинами и записывает результат в переменную, стоящую слева
|
^=
|
Выполняет поразрядную операцию, исключающее ИЛИ над величинами, и записывает результат в переменную, стоящую слева
|
<<=
|
Сдвигает разряды левого операнда влево на число позиций, задаваемое правым операндом, и записывает результат в переменную, стоящую слева
|
>>=
|
Сдвигает разряды левого операнда вправо на число позиций, задаваемое правым операндом, и записывает результат в переменную, стоящую слева
|
Операции над указателями
Операция
|
Описание
|
Пример
|
&
|
Операция получения адреса— выдает адрес переменной, имя которой стоит за – обозначением операции
|
//присваиваем значение переменной nVariable = 77;
// в ptr - адрес переменной
ptr = &nVariable;
|
*
|
Косвенная адресация — вы дает значение , хранящееся по адресу, на который ссылается указатель
|
/* переменной nVaiue присваиваем значение переменной nVariable, используя косвенную адресацию */
nVaiue = *ptr;
|
Операции над структурами и объединениями
Операция
|
Описание
|
Пример
|
(точка)
|
Операция Принадлежности, используемая совместно с именем структуры (объединения) для задания компонента этой структуры
|
/* name — имя структуры, a member - элемент, указанный в шаблоне. Тогда этот элемент структуры определяется следующим образом */ name. member (объединения)
|
->
|
Косвенная адресация (определение принадлежности) элемента используется совместно с указателем на структуру (объединение) для идентификации некоторого компонента этой структуры (объединения)
|
/* ptrName - указатель на структуру, a member - элемент, указанный в шаблоне.
Тогда этот элемент структуры определяется следующим образом */ ptrName->member
|
Дополнительные операции
Операция
|
Описание
|
Пример
|
Sizeof
|
Позволяет получить размер (в байтах) операнда, стоящего справа. Операндом может быть обозначение типа, заключенное в круглые скобки, либо имя конкретной переменной (как базового, так и сложного типа)
|
sizeof (double)
/* если structName - имя структуры, то следующий оператор возвратит ее размер */
sizeof structName
|
(type)
|
Операция приведения типа преобразует следующее за ней значение в тип, определенный ключевым словом (или словами), заключенным в круглые скобки
|
/* следующая операция преобразует целое число 7 в число с плавающей точкой 7.0 */
(float)7
|
?:
|
Операция условия имеет три операнда, каждый из которых является выражением, расположенным следующим образом:
выражение 1 ? выражение2: выражение З
Результат равен значению выражение 2, если выражение 1 истинно и значению выражение З, в противном случае.
|
/* Результат операции равен большему из двух чисел а и б */
(а >b) ? а: b
|
, (запятая)
|
Операция "запятая" связывает два выражения в одно и гарантирует, что левое выражение будет вычислено первым
|
/* Наиболее часто используется в цикле for * /
for(i=0, nStep=2; niter < 10; i+=nStep);
{
// тело цикла
}
|
Приоритет выполнения операции
Операции (от высшего приоритета к низшему)
|
Порядок выполнения
|
( ) { } - > . (точка)
|
слева направо
|
! ~ ++ -- - (тип) * & sizeof (все унарные)
|
справа налево
|
* / %
|
слева направо
|
+ -
|
---- “-----
|
<< >>
|
---- “-----
|
< <= > >=
|
---- “-----
|
== !=
|
---- “-----
|
&
|
---- “-----
|
^
|
---- “-----
|
|
|
---- “-----
|
&&
|
---- “-----
|
||
|
---- “-----
|
?:
|
---- “-----
|
= += -= *= /= %=
|
справа налево
|
, (запятая)
|
Слева направо
|
Предопределенные макросы
Макрос
|
Комментарий
|
_date_
|
Дата компиляции текущего исходного файла, представленная в виде строковой константы в формате Mmm dd yyyy (месяц день год)
|
_file_
|
Строковая константа, являющаяся именем текущего исходного файла
|
_line_
|
Десятичная целая константа, представляющая текущий номер строки исходного текста
|
_stdc_
|
Равенство 1 показывает полную совместимость со стандартом ANSI С; в противном случае не определен
|
_TIME_
|
Строковая константа, представляющая время начала обработки текущего исходного файла в формате hh:mm:ss (часы:минуты:секунды)
|
_timestamp_
|
Строковая константа, представляющая дату и время последней. Модификации текущего исходного файла в формате Ddd Mmm Date hh:mm:ss yyyy (аббревиатура дня недели месяц число часы: минуты: секунды год)
|
Венгерская нотация
Префикс
|
Имя
|
a
|
Array (Массив)
|
с
|
Character (Символ)
|
d
|
Date (Данные)
|
dbl
|
Double (Двойной)
|
dc
|
Device Context (Контекст устройства)
|
dw
|
Double Word (Двойное слово)
|
f
|
Flag, Boolean or Logical (Флаг, Булевское или Логическое)
|
h
|
Handle (Дескриптор)
|
i
|
Integer (Целое)
|
inst
|
Instance (Экземпляр, Копия)
|
I
|
Long (Длинное)
|
li
|
Long Integer (Длинное целое)
|
Ip
|
Long Pointer (Дальний указатель)
|
msg
|
Message (Сообщение)
|
n
|
Numeric (Цифровое)
|
о
|
Object (Объект)
|
pal
|
Palette (Палитра)
|
psz
|
Pointer to a Zero Terminated String (Указатель на строку с завершающим нулем)
|
ptr
|
Pointer (Указатель (или Р, когда использован с другими переменными, подобными psz))
|
r
|
Real (Действительное, Вещественное)
|
гс
|
Rectangle (Прямоугольник)
|
rgb
|
Red, Green, Blue (Переменная цвета)
|
rsrc
|
Resource (Ресурс)
|
sgl
|
Single (Единственное)
|
si
|
Short Integer (Короткое целое)
|
sz
|
Zero Terminated String (Строка с завершающим нулем)
|
u
|
Unsigned (Без знаковое)
|
ui
|
Unsigned Integer or Byte (Без знаковое целое или Байт)
|
w
|
Word (Слово)
|
wnd
|
Window (Окно)
|
Директивы препроцессора
Директива
|
Комментарий
|
define идентификатор
#define идентификатор текст
#define идентификатор (список, параметров) текст
|
Используется для замены часто используемых
в программе констант, ключевых слов, операторов и выражений содержательными идентификаторами
|
#undef идентификатор
|
Отменяет текущее определение идентификатора
|
#
defined идентификатор
#defined (идентификатор)
|
Эта операция дает истинное (не равное 0) значение, если заданный идентификатор в
данный момент определен
|
#include <путь>
#include "путь"
|
Включает содержимое файла, заданного именем путь, в текущий компилируемый исходный файл. Путь представляет собой имя файла, которому может предшествовать спецификация каталога. Если спецификация пути заключена в двойные кавычки, то препроцессор ищет файл в текущем (рабочем) каталоге, а в случае его отсутствия поиск переносится в стандартные каталоги поиска, которые задаются командой PATH операционной системы и установками интегрированной среды Visual C++. Если же спецификация пути заключена в угловые скобки, то поиск осуществляется в стандартных каталогах
|
#if К
онстантное_
выражение
|
Условная подстановка фрагмента текста в зависимости от значения константного выражения: фрагмент подставляется, если оно истинно. Конец условно подставляемого фрагмента обязательно должен быть отмечен директивой #endif
|
#endif
|
Обозначает конец условно подставляемого фрагмента текста, начатого директивой #if
|
#ifdef идентификатор
#ifndef идентификатор
|
Условная подстановка фрагмента текста в зависимости от того, определен ли идентификатор
|
#else
|
Позволяет организовать альтернативную ветвь условной подстановки определенной директивой #if. Между директивами #if и ttendif разрешается использовать только одну директиву #
else
|
#elif константное_выражение
|
Сокращение от "else if". Используется как альтернативный вариант при построении вложенных директив #if
|
#line целая_константа
"имя_файла" (необязательное)
|
Используется при генерации сообщений периода компиляции и сообщает компилятору об изменении порядка нумерации строк и необязательном изменении имени файла
|
#
error текст
|
Служит для прерывания компиляции, поиска ошибок и выдачи сообщения вида:Fatal: имя_файла номер_строки Error directive:Т
екст
|
#pragma последовательность
символов
|
Определяет зависящие от реализации указан
ия компилятору (прагмы). Компилятор Visual C++ поддерживает следующие прагмы:
alloc text, comment, optimize, auto_inline, component, inline_depth, pack, bss seg, data_seg, function, intrinsic, setlocale, code_seg, hdrstop, message, const seg, once, warning, inline recursion, check_stack, include_alias
Например,директива
#pragma warning(disable: 4305)
предписывает компилятору не выдавать предупреждения при несовпадении типов данных
|
Операции препроцессора
Операция
|
Комментарий
|
# - операция подстановки строки
|
Используется перед параметром макроса, и предписывает вместо значения этого параметра подставлять его имя
|
## - операция конкантенации
|
Объединяет лексемы и, удаляя все пробелы, образует новое имя. Одно из применений этой операции заключается в динамическом создании имен переменных и макроопределений. В макроопределении эта операция обрабатывается после подстановки параметров макроса
|
#@— операция подстановки символа
|
Рассматривает фактический параметр как отдельный символ, заключенный в одиночные кавычки
|
|