Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABORT.docx
Скачиваний:
2
Добавлен:
09.09.2019
Размер:
69.94 Кб
Скачать

Int errno;

main()

{

float x,y;

for (errno=EDOM; errno==EDOM; y=asin(x)) {

printf("Sine=");

scanf("%f", &x);

errno = 0;

}

printf("Arc sine of %f\n",x,y);

}

На выходе:

Sine = -1.001

asin: DOMAIN error

Sine = -1

Arc sine of -1.000000=-1.570796

ASSERT

#include <assert.h>

Void assert(expression);

Описание.

Процедура assert печатает диагностическое сообщение и за-

вершает вызванный процесс, если expression ложно, 0. Диагности-

ческое сообщение имеет форму:

Assertion failed: file <filename>, line <linenumber>,

где filename - имя исходного файла, linenumber - номер строки,

которая ошибочна.

Если expression истинно (ненулевое), никакого действия не

выполняется.

Процедура assert обычно используется для обнаружения логи-

ческих ошибок в программе. Выражение expression должно быть зада-

но таким образом, чтобы оно было истинным, если программа выпол-

няется как намечено. После того как отлажена программа, может

быть использован специальный "no debug" идентификатор NDEBUG для

удаления вызовов assert из программы. Если NDEBUG определен (лю-

бым значением) опцией командной строки /D или с директивой

#define, препроцессор языка Си удаляет все вызовы assert из ис-

ходной программы.

Возвращаемое значение.

Возвращаемого значения нет.

Замечание. Процедура assert реализована как макро.

Пример:

#include <stdio.h>

#include <assert.h>

analyse_string (string)

char *string;

{

/* проверка строки перед обработкой */

assert (string != NULL); /* не может быть NULL,

здесь должна быть

строка */

assert (*string != '\0'); /* не может быть

пустой */

.

.

.

}.

ATAN - ATAN2

#include <math.h>

double atan(x); вычисляет арктангенс x

double x;

double atan2(y,x); вычисляет арктангенс y/x

double x;

double y;

Описание.

Обе функции atan и atan2 возвращают результат арктангенса.

Если оба аргумента atan2 равны 0, функция устанавливает errno в

EDOM, печатает сообщение об ошибке DOMAIN в stderr и возвращает

0.

Обрaботкa ошибок может быть модифицировaнa при исполь-

зовaнии процедуры matherr.

См.тaкже acos, asin, cos, matherr, sin, tan.

Пример:

#include <math.h>

printf("%.7f\n", atan(1.0)); /* n/4 */

printf("%.7f\n", atan2(-1.0,1.0)); /* -n/4 */

На выходе:

0.7853982

-0.7853982

ATOF-ATOL

#include <match.h> Использует либо <match.h>,

#include <stdlib.h> либо <stdlib.h>.

double atof (string); преобразует строку string в

double

char *string строка, подлежащая преобра-

зованию

int atoi (string) преобразует строку string в

int

long atol (string) преобразует строку string в

long

char *string строка, подлежащая преобра-

зованию

Описание.

Эти функции преобразуют символьную строку в значение с пла-

вающей точкой двойной точности (atof), в целое значение (atoi)

или в длинное целое значение (atol).

Исходная строка string представляет собой последователь-

ность символов, которые могут быть интерпретированы как числовое

значение определенного типа.

Функция прекращает чтение исходной строки как только поя-

вится первый символ, который не может быть воспринят как часть

числа (им может быть NULL-символ, завершающий строку).

Функция atof предполагает, что строка string имеет следую-

щую форму:

[whitespace][sign][digits][{d|D|E}[sign]digits] ,

где [whitespase] состоит из пробелов и/или знаков табуляции,

которые игнорируются; [sign] означает "+" или "-"; [digits] -

- одна или несколько десятичных цифр. Если перед десятичной точ-

кой нет цифр, то хотя бы одна цифра должна стоять после нее. Де-

сятичные цифры могут следовать за показателем степени, который

состоит из буквы (d,D,e или E) и десятичного целого со знаком.

Функции atoi и atol не обрабатывают десятичные точки или

показатели степени. Аргумент string для этих функций имеет вид:

[whitespace][sign]digits ,

где whitespace, sign, digits обозначают то же, что и для atof.

Возвращаемое значение.

Каждая из функций возвращает значение типа double, int или

long, получаемое в результате интерпретации входных символов как

чисел.

Возвращаемое значение равно 0 (0L для atol), если вход не

может быть преобразован в значение данного типа. Возвращаемое

значение не определено в случае переполнения.

См. также ecvt, fcvt, gcvt.

Пример:

Следующие примеры показывают, как числа, записанные в виде

строк, могут быть преобразованы в числовые значения при использо-

вании функций atof, atoi, atol:

#include <math.h>

extern long atol (\ );

main (\ )

{

char *s;

double x;

int i;

long l;

s=" -2309.12E-15";

x=atof(s);

printf("%e\t",x);

s="7.8912654773d210";

x=atof(s);

printf("%e\t",x);

s="-9885";

i=atoi(s);

printf("%d\t",i);

s="98854 dollars";

l=atol(s);

printf("%ld\n",l);

}

BDOS

#include <dos.h>

int bdos(dosfn, dosdx, dosal);

int dosfn; номер функции

unsigned int dosdx; значение регистра DX

unsigned int dosal; значение регистра AL

Описание.

Функция bdos выполняет системный вызов MS DOS, номер кото-

рого определен в dosfn, после размещения соответственно в регист-

рах DX и AL значений dosdx и dosal. Функция bdos выполняет коман-

ду INT 21H для осуществления системного вызова.

Функция bdos задается для использования при вызовах

DOS-системных вызовов, которые не принимают аргументов или толь-

ко принимают их в регистры DX(DH,DL) и/или AL.

Возвращаемое значение.

Функция bdos возвращает значение регистра AX, запомненного

системным вызовом.

См.также intdos, intdosx.

Замечание. Этот вызов не может использоваться для осуществ-

ления системных вызовов, в которых указываются ошибки посредством

установки флага переноса. Т.к. Си-программы не имеют доступа к

этому флагу, статус возвращаемого значения не может быть опреде-

лен. В этом случае используется функция intdos.

Пример:

В следующем примере выводится подсказка 9 функцией MS DOS

(вывод строки). Поскольку значение регистра AL не является необ-

ходимым, то передается 0. Этот пример работает правильно только

для малой и средней моделей памяти, так как bdos не меняет значе-

ния сегментов регистров.

#include <dos.h>

char *buffer = "Enter file name :$";

/* AL не является необходимым, поэтому передается 0 */

bdos(9,(unsigned)buffer,0);

BESSEL

#include <math.h>

double j0(x);

double j1(x);

double jn(n,x);

double y0(x);

double y1(x);

double yn(n,x);

double x; значение с плавающей точкой

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]