float x=1.5;//определение и инициализация внешней переменнойx
В этом примере:
глобальная переменная a определена вне всех блоков. Память под нее выделяется в сегменте данных в начале работы программы, областью действия и областью видимости является вся программа до оператора описания одноименной локальной переменной a,
локальные переменные b и c определены внутри блока, поэтому область их видимости – весь блок от момента их описания. Память под b выделяется в стеке при входе в блок и освобождается при выходе из него. Переменная с располагается в сегменте данных и существует все время, пока работает программа.
Если при определении начальное значение переменной явным образом не задано, то компилятор присваивает глобальным и статическим переменным нулевые значения соответствующего типа. Автоматические переменные в этом случае не инициализируются.
Описание переменной может выполняться в форме объявления или определения.
Объявление описывает свойства переменной, информируя компилятор о типе переменной и классе памяти. Определение содержит, кроме этого, указание компилятору о выделении памяти в соответствии с типом переменной, то есть связывает переменную с конкретной областью памяти. В Си большинство объявлений являются одновременно и определениями. В приведенном выше примере только описание:
является объявлением, но не определением.
Переменная может быть объявлена многократно, но определена только в одном месте программы.
Математические функции служат для вычисления некоторых часто встречающихся тригонометрических и элементарных функций. Они помещены в файл <math.h>, вызываемый из системной библиотеки директивой препроцессора:
#include <math.h>
Аргументы математических функций могут иметь типы double, float или int, причем все функции, кроме abs(), round(), ceil(), floor() и irand() возвращают значения типа double, а эти – типа int. Углы в тригонометрических функциях задаются в радианах:
atan2(x,y) arctg x/y
exp(x) ex
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
В Си имеется много предопределенных числовых констант, которые используются в инженерных и научных расчетах: