либо выражение, либо тип данных sizeof(char) = =1 double d; sizeof(d) //= =8
y=300*sin(x)
int double
Неявное приведение типов производит компилятор автоматически по правилу: ”Полученное в результате вычисления выражение приводится к типу слева от знака равенства.”.
True =1 False=0 ex. : bool b=(x<=y); //b=5 – ошибка int n=b; (неявное приведение к типу int)
Старый BOOL – 4 бита Сейчас BOOL – 1 бит
Понятие, объявление и определение.
Программист даёт имена переменным или функциям, а потом использует переменные в выражении или вызове функции. Когда компилятор встречает в тексте программы любое имя, он должен знать, что имеется ввиду под этим именем, поэтому в C использованию любого имени должно предшествовать описание его свойств.
Declaration Объявлений одного имени может быть сколько угодно, но они должны быть согласованы. Определение может быть только одно.
extern int iNumber; float var2; //объявление + определение double var3 = 3.14159, Один тип объявляется через ‘ , ’ : char var1, var2,var3, var4 = ’ y ’;
Ключевое слово typedef.
typedef тип синоним типа,
typedef unsigned char BYTE; BYTE var8; #if defined(_win32) typedef int int32; #else typedef long int 32; #endif int32 i=1 - 32 разряда памяти
Нельзя комбинировать имена, созданные с помощью typedef.
//typedef long int 32 MY; - НЕЛЬЗЯ for (int index…) { index }
Виды компоновки программ:
1) Внешняя external (все переменные определены вне {} без спецификатора static) int var1, int main {}
2) Внутренняя internal (объявление вне {}, но с ключевым словом static )
3) Без компоновки no linkage (не подлежат компоновке) {int var1; }
file.cpp int z; static int y; void f1() { int x; static int; } void f2() { использование y } void f3() { использование y, z }
file2.cpp extern int z; void f4(); { использование z; }
Автоматическая память – все переменные, которые были определены внутри блока, или параметры функции.
Область видимости.
{ … int i; } //i=1
File scope – область видимости для переменной не {} будет видна только в этом файле
К скрытому глобальному имени можно обратиться с помощью оператора разрешения области видимости “ :: ”
int ix; // глобальная
void Func ()
{
ix=1;
int ix;
:: ix=50;
обращение к глобальной переменной
ix=4;
}
Void F1 ()
{
ix=20;
}
Пространство имён – namespace.
namespace one { int version=1;}
namespace two { int version=2;}
int main ()
{
int n=one::version; //1
int n1=two:: version; //2
}
Инструкции.
Инструкции – идут по порядку, содержат имена, разделители.
инструкция
имя оператор разделители
(частей инструкции)
TAB пробел
Типы инстр.
Для чего она
Примечание
составная инструкция
группа интср.
{} может не содержать ни
( заключ. В {})
одной инструкции
инструкция объявления
имя переменной
Вводит новое имя в новые
(нового типа)
области видимости
Последова-тельность операторов,
может содержать арифм.
инструкция выражения
операндов, действ.
выражения, логич. выраж.,
над ними
вызов ф-ии
пустая инструкция
;
инструкция выбора
if, else, switch
инструкция цикла
do, while, for
while (усл.) инструкция
инструкция безусловного
continue, go to, return,
перехода
break
Инструкции условий.
If, if – else
if (условие) {true инструкция}
[ else {false инструкция}] – не обязательно
If (x!=0) … if (x)
Переключатель switch
switch (выражение)
{
case конст. _1:
…//
Break;
case конст. _2:
…//
Break;
default:
}
Существенно:
В скобках switch находится выражение, которое в итоге сводится к целому типу (switch переводит к целому типу).
2) Точки, куда передаётся управление, помечены ключевым словом case. Каждой такой метке сопоставляется константа (типа int) для сравнения со значением, вычисленным в скобках.
3) Обычно использование case предполагает, что будет выполняться вся ветвь программы, следующая за операндом. Для прекращения обработки case выражений, используется функция break, которая передаёт управление на закрывшуюся скобку.
switch (выражение)
{
Case 5;
cout<<5;
Case 4;
cout<<4;
}
Выражение default будет выполняться, если не совпало ни одно условие.
switch (выр-е)
{
Case 5;
{
Int iX;
}
Break;
}
Инструкции цикла.
While.
Обычно используется для нерегулярных циклов (количество повторений заранее неизвестно).
while (условие продолжения цикла) {операторы}
Замечание: С помощью while очень легко создать бесконечный цикл.
while (int i=1) {}
break – выход из бесконечных цикла
if(getch()=’_’) break;}
do… while
do тело цикла while (условие продолжения)
for
Используется для организации регулярных циклов (с известным количеством повторений).
for ([инициализирующая инструкция];[выражение 1, условие]; [выражение 2])
{ тело цикла;}
for (index=0, index <10, index ++)
Условие продолжения цикла с оператором for вычисляется на каждой итерации, поэтому не стоит компилировать вычисление сложения выражения.
Лучше выражение вычислять один раз до начала цикла.
for (… ; r<x*y*z; r++) => for (…,r<R; r++)
{}
В любой части цикла могут быть несколько выражений, они должны быть разделены “,”, а не “;”.
for (i=0, j=0; i<100; i++, j++)
Тело цикла может быть пустым.
Инструкции безусловного перехода.
break, continue, go to , return.
Break –прерывает выполнение switch, while, for и передаёт управление на инструкцию, следующую за ними.
Если имеет место вложенность, то прерывается самая внутренняя по отношению к break инструкция.