Справочник по Visual С++
|Ключевые слова языка 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 |Длинное целое – могут иметь целое как |
| | |минимум такого же размера, как самое |
| | |большое int и, возмоно,больше |
| | |Короткое целое – могут иметь целое не |
| |short, short int |больше самого маленького int а, |
| | |возможно, и меньше. |
|Целые без знака |unsigned, |Имеют только нулевые и положительные |
| |unsigned int |значения. Они не могут быть больше |
| | |самого большого возможного |
| | |положительного числа. Числа таких |
| | |типов подчиняются законам арифметики |
| | |по модулю 2". |
| |unsigned long, | |
| |unsigned int long | |
| |unsigned short, | |
| |unsigned int short| |
|Символы |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, следующие цифры|77 |
| |0-9 |-512 |
| | |77385L |
|Шестнадцатеричный |Начинается с 0x или 0X; следующие|0x4D |
| |цифры 0-9, a-f или A-F |-0Х200 |
| | |0x12e49 |
|Восьмеричный |Начинается с 0; следующие цифры |0115 |
| |0-7 |-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 идентификатор |Эта операция дает истинное (не равное 0) |
|#defined (идентификатор) |значение, если заданный идентификатор в данный |
| |момент определен |
|#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) |
| |предписывает компилятору не выдавать |
| |предупреждения при несовпадении типов данных |
Операции препроцессора
|Операция |Комментарий |
|# - операция | Используется перед параметром макроса, и предписывает |
|подстановки строки |вместо значения этого параметра подставлять его имя |
|## - операция |Объединяет лексемы и, удаляя все пробелы, образует |
|конкантенации |новое имя. Одно из применений этой операции заключается|
| |в динамическом создании имен переменных и |
| |макроопределений. В макроопределении эта операция |
| |обрабатывается после подстановки параметров макроса |
|#@— операция |Рассматривает фактический параметр как отдельный |
|подстановки символа |символ, заключенный в одиночные кавычки |
[pic]