- •2). Арифметические преобразования
- •1) Основные типы данных, операции и выражения
- •Билет №4
- •Билет№5
- •1). Символьные константы
- •2). Условный оператор
- •1). Операции отношения
- •Тип возвращаемого значения
- •1). Логические операции
- •2). Определение функции
- •Идентификатор или имя функции
- •Список аргументов или параметров
- •2). Вызов функции
- •Вызывающее окружение
- •1) Адресные операции
- •1). Операции над структурами и объединениями
- •2). Указатели и массивы
- •1). Операция sizeof
- •2). Перечисления
- •2). Типы переменных
2). Перечисления
Есть способ связывания имен с целыми константами, который часто более удобен, чем описание с const.
Например:
enum { ASM, AUTO, BREAK };
Здесь определены три целых константы, которые называются элементами перечисления, и им присвоены значения.
Поскольку по умолчанию значения элементов перечисления начинаются с 0 и идут в возрастающем порядке, то приведенное перечисление эквивалентно определениям:
const ASM = 0;
const AUTO = 1;
const BREAK = 2;
Перечисление может иметь имя, например:
enum keyword { ASM, AUTO, BREAK };
Имя перечисления становится новым типом. С помощью стандартных преобразований тип перечисления может неявно приводиться к типу int. Обратное преобразование (из типа int в перечисление) должно быть задано явно.
Например
void f()
{
keyword k = ASM;
int i = ASM;
k = i // ошибка
k = keyword(i);
i = k;
k = 4; // ошибка
}
Последнее преобразование поясняет, почему нет неявного преобразования из int в перечисление: большинство значений типа int не имеет представления в данном перечислении. Описав переменную с типом keyword вместо очевидного int, мы дали как пользователю, так и транслятору определенную информацию о том, как будет использоваться эта переменная. Например, для следующего оператора
keyword key;
switch (key) {
case ASM:
// выполнить что-либо
break;
case BREAK:
// выполнить что-либо
break;
}
транслятор может выдать предупреждение, поскольку из трех возможных значений типа keyword используются только два.
Значения элементов перечисления можно задавать и явно.
Например:
enum int16 {
sign=0100000,
most_significant=040000,
least_significant=1
};
Задаваемые значения необязательно должны быть различными, положительными и идти в возрастающем порядке.
Билет № 19
2). Типы переменных
Надеюсь вы знаете что такое переменная, если нет прочитайте тут первый абзац :]
итак базовые типы переменных в C++:
тип размер (байт) минимальное значение максимальное значение
unsigned short int 2 0 65535
short int 2 -32768 32767
unsigned long int 4 0 4294967295
long int 4 -2147483648 2147483647
int (16 bit) 2 -32,768 32767
int (32 bit) 4 -2147483648 2147483647
unsigned int (16 bit) 2 0 65535
unsigned int (32 bit) 2 0 4294967295
char 1 256 символов
float 4 1.2e-38 3.4e38
double 8 2.2e-308 1.8e308
Переменные типа int могут иметь размер 2 или 4 байта в зависимости от компилятора и системы компьютера(16 или 32-разрадная).Узнать размер переменной(объекта) данного типа можно с помощью функции sizeof(),
Например:
cout<<"int: "<<sizeof(int)<<" char: "<<sizeof(char);
выведет:
int: 4 char: 1
т.е. переменная типа int имеет размер 4 байта а char 1 байт.
Перед тем как использовать переменную в C++ надо ее объявить.
Для этого указывается тип переменной и ее имя, например:
int a ;
Можно объявить несколько переменных одногог типа в одной строке:
int a , b, c ;
Можно инициализировать(присвоить значение) переменной при объявлении:
int a, b=1, c=10, d ;
При попытке присвоить переменной значение превышающее максимально допустимое,то достигнув максимального значения отсчет начинается с минимального значения.
Например:
unsigned short int n; n=65535; cout<<"n="<<n<<endl; n=n+10; cout<<"n="<<n<<endl;
результат:
n=65535
n=9
Константы
Константы как и переменные предназначены для хранения данных,но в отличие от переменных должны инициализироваться при объявлении и им нельзя присвоить новое значение.Константы можно определить двумя способами:
#define MyConstant 10 ( о директиве #define см. тут)
const int MyOtherConstant = 10 ;
Предпочтительнее использовать второй способ так как при определении константы с помощью #define она не имеет типа,а тип константы вам может понадобиться.
Перечисления:
с помощью перечислений можно создать тип переменных которые могут принимать только определенные вами значения.Для создания перечисления используется слово enum затем имя типа и список допустимых значений в фигурных скобках.
enum color { red,green,blue };
при этом создается новый тип color и определяются константы red=0,green=1,blue=2
если обявить переменную типа color
color a_color ;
то она может принимать только значения red green и blue (т.е. 0,1,2)
По умолчанию, если константы перечисления не инициализировать то первой из них присваивается значение 0 и каждая последующая константа принимает значение на 1 больше предыдушей.Любую константы можно инициализировать произвольным значением, при этом неинициализированные константы будут принимать значения на 1 больше предыдушей.
Например при объявлении:
num color { red=5,green,blue, yellow=100,black};
константы будут иметь следующие значения:
red=5,green=6,blue=7,yellow=100,black=101.
typedef:
typedef используется для создания псевдонима типа данных, например если вам лень каждый раз при определении беззнакового целого писать unsigned short int то можно создать псевдоним для этой “фразы”:
typedef unsigned short int US ;
после этого если вам нужно создать новую переменную вместо unsigned short int n просто пишете:
US n ;
Ну вот и все о типах переменных. На первый взгляд их мало, вам конечно понадобятся и другие типы (например для работы со строками) их можете создать сами, но это уже не в этой статье :]
Билет № 20
1). Любая переменная при определении может быть инициализирована. Любая переменная инициализируется нулем (0), если явно не задано другое начальное значение. Глобальные и статические переменные могут быть проинициализированы только константой соответствующего типа. Локальные переменные могут быть проинициализированы любым выражением, а не только константой.
Инициализация глобальных и статических переменных производится однократно. Инициализация локальных переменных производится каждый раз при вызове соответствующих функций.
Примеры:
int n = 1;
double p = MarketInfo(Symbol(),MODE_POINT);
string s = "hello";
double f[] = { 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 };
int a[4][4] = { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 };
Список значений элементов массива должен быть заключен в фигурные скобки. Пропущенные инициализирующие значения считаются равными 0. Если размер инициализируемого массива не указан, то он определяется компилятором, исходя из размера инициализирующей последовательности. Многомерные массивы инициализируются одномерной последовательностью, последовательностью без дополнительных фигурных скобок. Массивы (в том числе и объявленные на локальном уровне) могут инициализироваться только константами.
Билет № 21
1). Программа на языке С++ представляет собой набор функций. Одна из функций должна иметь имя main. Операционная система передает управление в программу пользователя на функцию с этим именем и тем самым начинается выполнение программы. От функций в программе функция main отличается тем, что ее нельзя вызвать изнутри программы, а ее параметры, если они существуют, обычно задаются ОС, хотя это необязательно, main бывает первой функцией в тексте программы.
main ( )
{
...
return 0;
}
Если предположить, что main- первая функция, определенная в программе на языке С++, то поскольку ни одна функция не может содержать определения другой функции, следом в тексте будут располагаться определения вспомогательных функций, «неглавных» функций. Их может быть различное количество.
main ( )
{
...
return 0;
}
function 1 ( )
{
}
function 2 ( )
{
}
...
function n ( )
{
}
Функции могут быть описаны в произвольном порядке. Удобно расположить их по алфавиту или сгруппировать по определенному признаку.
Размещено на Allbest.ru
