Int i,j,k; //переменные i, j, k – целого типа




Float x,y; //переменные x, y – вещественного типа

Char a; //переменная a – символьного типа

Желательна инициализация переменных при их описании:

int i=1, j=0, k=2;

float x=0.25, y=-1.5;

char a=’W’;

Если при описании переменной использован модификатор const, то это означает, что значение переменной нельзя изменять в программе. Такую переменную называют именованнойконстантой. Она обязательно должна быть инициализирована:

const int i=1; //именованная целая константа i

const float x=0.25; //именованная вещественная константа x

const char a=’W’; //именованная символьная константа a

Класс памяти определяет время жизни и область видимости переменной:

autoавтоматическая переменная. Память под нее выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее описание. Освобождение памяти происходит при выходе из блока, в котором описана переменная. Время ее жизни – от момента описания до конца блока. Для локальных (описанных внутри блока) переменных спецификатор auto применяется по умолчанию, поэтому задавать его явным образом смысла не имеет;

externвнешняя переменная. Эта переменная определяется в другом месте программы (в другом файле или дальше по тексту программы). Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены. Если переменная в этом же описании инициализируется, то спецификатор extern игнорируется;

staticстатическая переменная. Время ее жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего описание переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными (описаны вне любого блока, область их действия – весь файл, в котором они описаны) и локальными (описаны внутри блока). Глобальные статические переменные видны только в том модуле, в котором они описаны;

registerрегистровая переменная. Память для нее выделяется в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto:

int a; // глобальная переменная a

void main() // заголовок головной программы

{ // начало блока головной программы

int b=1; // локальная переменная b

extern float x;// переменная x определена в другом месте

static int c=0;// локальная статическая переменная c

register char d=’W’; // регистровая переменная d

a=1; //присваивание значения глобальной переменной a

int a; // описание локальной переменной a

// с этого момента и до конца блока действует

// только локальная переменная a

a=0; // присваивание значения локальной переменной a

.........

return 0;

} // конец блока головной программы

float x=1.5;// определение и инициализация внешней переменной x

В этом примере:

глобальная переменная a определена вне всех блоков. Память под нее выделяется в сегменте данных в начале работы программы, областью действия и областью видимости является вся программа до оператора описания одноименной локальной переменной a;

локальные переменные b и c определены внутри блока, поэтому область их видимости – весь блок от момента их описания. Память под b выделяется в стеке при входе в блок и освобождается при выходе из него. Переменная с располагается в сегменте данных и существует все время, пока работает программа.

Если при определении начальное значение переменной явным образом не задано, то компилятор присваивает глобальным и статическим переменным нулевые значения соответствующего типа. Автоматические переменные в этом случае не инициализируются.

Описание переменной может выполняться в форме объявления или определения.

Объявление описывает свойства переменной, информируя компилятор о типе переменной и классе памяти. Определение содержит, кроме того, указание компилятору о выделении памяти в соответствии с типом переменной, то есть связывает переменную с конкретной областью памяти. В Си большинство объявлений являются одновременно и определениями. В приведенном выше примере только описание

extern float x;

является объявлением, но не определением.

Переменная может быть объявлена многократно, но определена только в одном месте программы.

 

МАТЕМАТИЧЕСКИЕ ФУНКЦИИ

Математические функции служат для вычисления некоторых часто встречающихся тригонометрических и элементарных функций. Они помещены в файл <math.h>, вызываемый из системной библиотеки директивой препроцессора:

#include <math.h>

Аргументы математических функций могут иметь типы double, float или int, причем все функции, кроме abs(), round(), ceil(), floor() и irand() возвращают значения типа double, а эти – типа int. Углы в тригонометрических функциях задаются в радианах:

Sin(x) sin x

Cos(x) cos x

Tan(x) tg x

Asin(x) arcsin x

Acos(x) arccos x

Atan(x) arctg x

Atan2(x,y) arctg x/y

Sinh(x) sh x

Cosh(x) ch x

Tanh(x) th x

exp(x) ex

Log(x) ln x

Log10(x) lg x

pow(x,y) xy ошибка, если x = 0 и y <= 0 или

если x < 0 и y не целое

sqrt(x)

ceil(x) наименьшее целое, большее или равное х:

ceil(5.0) = 5

ceil(5.4) = 6

ceil(5.8) = 6

floor(x) наибольшее целое, меньшее или равное x –
выделение целой части числа:

floor(5.0) = 5

floor(5.4) = 5

floor(5.8) = 5

round(x) округление аргумента:

round(5.0) = 5

round(5.4) = 5

round(5.8) = 6

fabs(x) |x| x – вещественное

abs(x) |x| x – целое

ldexp(x,n) x•2n

fmod(x,y) остаток от деления x на y
в виде вещественного числа:

fmod(7.8, 5) = 2.8

fmod(7.8, 5.0) = 2.8

fmod(7.8, 5.2) = 2.6

fmod(7.8, 5.5) = 2.3

fmod(7.0, 5.0) = 2.0

fmod(7, 5) = 2.0

fmod(7.5, 5.8) = 1.7



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: