- pow, powf, powl pow, powf, powl
- Синтаксис Syntax
- Параметры Parameters
- Возвращаемое значение Return Value
- Remarks Remarks
- Требования Requirements
- Общие сведения о языке С++
- 2.7 Стандартные функции
- 2.8 Структура программы
- std:: pow, std:: powf, std:: powl
- Contents
- [edit] Parameters
- [edit] Return value
- [edit] Error handling
- [edit] Notes
- Язык си функция pow
- Краткая справка по языку Си (для микроконтроллеров)
- Пример простой программы на Си для микроконтроллера AVR
- Общая структура памяти программы на Си
- Типы данных в Си
- Введение псевдонимов для ранее описанных типов данных:
- Преобразование типов:
- Переменные и константы
- Квалификаторы (или «модификаторы доступа»): const, volatile.
- Спецификторы хранения (описатель класса памяти): auto, register, extern, static.
- Описание области действия идентификаторов (имен):
- Следует различать присваивание и инициализацию:
- Константы
- Операции и операторы
- Операции:
- Порядок выполнения операторов:
- Оператор запятая:
- Указатели и ссылки в Си
- Указатели:
- Основные операции над указателями:
- Видео
pow, powf, powl pow, powf, powl
Синтаксис Syntax
Параметры Parameters
Возвращаемое значение Return Value
Remarks Remarks
Pow не распознает целочисленные значения с плавающей запятой больше 2 64 (например, 1.0 E100). pow does not recognize integral floating-point values greater than 2 64 (for example, 1.0E100).
Pow имеет реализацию, использующую Streaming SIMD Extensions 2 (SSE2). pow has an implementation that uses Streaming SIMD Extensions 2 (SSE2). Сведения о реализации SSE2 и ограничениях на ее использование см. в разделе _set_SSE2_enable. For information and restrictions about using the SSE2 implementation, see _set_SSE2_enable.
Поскольку C++ допускает перегрузку, можно вызвать любую из различных перегрузок Pow. Because C++ allows overloading, you can call any of the various overloads of pow. В программе на языке C, если только вы не используете макрос для вызова этой функции, Pow всегда принимает два double значения и возвращает double значение. In a C program, unless you’re using the macro to call this function, pow always takes two double values and returns a double value.
Первоначально pow(T, int) перегрузки будут располагали pow вызов в последовательность встроенных операций умножения. Originally, the pow(T, int) overloads would unroll the pow call into a sequence of inline multiplication operations. Хотя это было быстрее, оно было также значительно менее точным и было удалено в Visual Studio 2015 с обновлением 1. While this was faster, it was also significantly less accurate and was removed in Visual Studio 2015 Update 1. Дополнительные сведения см. в статье улучшения соответствия в Visual Studio 2015 с обновлением 1. For more information, see Conformance Improvements in Visual Studio 2015 Update 1.
По умолчанию глобальное состояние этой функции ограничивается приложением. By default, this function’s global state is scoped to the application. Чтобы изменить это, см. раздел глобальное состояние в CRT. To change this, see Global state in the CRT.
Требования Requirements
Подпрограмма Routine | Обязательный заголовок (C) Required header (C) | Обязательный заголовок (C++) Required header (C++) |
---|---|---|
Pow, powf, Повл pow, powf, powl | либо or | |
макрос Pow pow macro |
Дополнительные сведения о совместимости см. в статье Compatibility. For additional compatibility information, see Compatibility.
Общие сведения о языке С++
2.7 Стандартные функции
Обозначение | Действие |
---|---|
abs(x) | Модуль целого числа |
fabs(x) | Модуль вещественного числа |
sin(x) | Синус числа |
cos(x) | Косинус числа |
tan(x) | Тангенс числа |
atan(x) | Арктангенс числа |
acos(x) | Арккосинус числа |
asin(x) | Арксинус числа |
exp(x) | Экспонента, |
log(x) | Натуральный логарифм, |
log10(x) | Десятичный логарифм, |
sqrt(x) | Корень квадратный, |
pow(x,y) | Возведение числа |
ceil(x) | Округление числа |
floor(x) | Округление числа |
Примеры записи математических выражений с использованием встроенных функций представлены в табл. 2.9.
2.8 Структура программы
Программа на языке С++ состоит из функций, описаний и директив препроцессора.
Одна из функций должна обязательно носить имя main. Элементарное описание функции имеет вид:
Основному тексту программы предшествуют директивы препроцессора, предназначенные для подключения библиотек, которые в общем виде выглядят так:
Общую структуру программы на языке С++ можно записать следующим образом:
По месту объявления переменные в языке Си можно разделить на три класса: локальные, глобальные и формальные параметры функции.
Локальные переменные объявляются внутри функции и доступны только в ней. Например:
Глобальные переменные описываются до всех функций и доступны из любого места программы. Например:
Формальные параметры функций описываются в списке параметров функции. Работа с функциями подробно описана в главе 4.
std:: pow, std:: powf, std:: powl
Language | ||||
Standard Library Headers | ||||
Freestanding and hosted implementations | ||||
Named requirements | ||||
Language support library | ||||
Concepts library (C++20) | ||||
Diagnostics library | ||||
Utilities library | ||||
Strings library | ||||
Containers library | ||||
Iterators library | ||||
Ranges library (C++20) | ||||
Algorithms library | ||||
Numerics library | ||||
Localizations library | ||||
Input/output library | ||||
Filesystem library (C++17) | ||||
Regular expressions library (C++11) | ||||
Atomic operations library (C++11) | ||||
Thread support library (C++11) | ||||
Technical Specifications |
Contents
[edit] Parameters
base | — | base as a value of floating-point or integral type |
exp | — | exponent as a value of floating-point or integral type |
iexp | — | exponent as integer value |
[edit] Return value
If no errors occur, base raised to the power of exp (or iexp ) ( base exp
), is returned.
If a domain error occurs, an implementation-defined value is returned (NaN where supported)
If a range error occurs due to underflow, the correct result (after rounding) is returned.
[edit] Error handling
If base is finite and negative and exp is finite and non-integer, a domain error occurs and a range error may occur.
If base is zero and exp is zero, a domain error may occur.
If base is zero and exp is negative, a domain error or a pole error may occur.
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
[edit] Notes
pow(float, int) returns float until C++11 (per overload 4) but returns double since C++11 (per overload 7)
Although std::pow cannot be used to obtain a root of a negative number, std::cbrt is provided for the common case where exp is 1/3
Язык си функция pow
Функция pow |
Категория: C, Функции, Математические | Добавил: root, 19 сентября 2010 | Просмотров: 7031 |
Функции powf() и powl() добавлены в версии С99. Каждая функция семейства pow() возвращает значение аргумента base, возведенное в степень ехр, т.е. в результате получается baseexp. Если значение аргумента base равно нулю, а ехр меньше или равно нулю, возможна ошибка из-за выхода за пределы области допустимых значений (ошибка из-за нарушения области определения). Она произойдет также в том случае, если base отрицательно, а ехр не является целым числом. При этом также может возникнуть ошибка из-за выхода за пределы диапазона представимых значений. Следующая программа выводит первые десять степеней числа 10, т.е. составляет таблицу степеней числа 10. Комментариев: 0 + |
Функция wctomb() преобразует двухбайтовый символ, содержащийся в параметре in, в его многобайтовый эквивалент и помещает результат в массив, адресуемый параметром out. Массив, адресуемый параметром out, должен иметь длину не меньше MB_CUR_MAX символов.
Если параметр out равен нулю, функция wctomb() возвращает ненулевое значение в случае, когда многобайтовый символ имеет кодировку, зависящую от территориально-языковых особенностей. В противном случае возвращается нуль.
Функция wcstombs() преобразует массив двухбайтовых символов, адресуемый параметром-указателем in, в его многобайтовый эквивалент и помещает результат в массив, адресуемый параметром out. Преобразованию подлежат только первые size символов. Процесс преобразования прекращается раньше, если будет обнаружен символ конца строки (‘0’).
В версии С99 к параметрам out и in применен квалификатор restrict.
Макрос va_copy() добавлен в версии С99.
Общая процедура создания функции, которая может принимать переменное количество аргументов, такова:
Функция должна иметь по крайней мере один известный параметр (может и больше), указываемый до переменного списка параметров. (Такие параметры называются также обязательными, а параметры, следующие за ними — необязательными.) Крайний правый известный параметр называется last_parm. (Он предшествует первому необязательному параметру.) Его имя используется в качестве второго параметра в обращении к макросу va_start(). Чтобы получить доступ к любому дополнительному параметру, сначала необходимо инициализировать указатель-аргумент argptr, обратившись к макросу va_start(). (Иными словами, необходимо выполнить вызов va_start(argptr, ).) После этого значения параметров возвращаются в результате вызова макроса va_arg(). В качестве второго аргумента этого макроса (соответствующего параметру type), нужно указать тип следующего параметра. Наконец, после прочтения всех параметров до возвращения из функции необходимо вызвать макрос va_end(), чтобы гарантировать корректное восстановление стека. Если макрос va_end() вызван не будет, высока вероятность аварийного отказа программы.
Макрос va_copy() копирует список аргументов, обозначенный параметром target, в объект, обозначенный параметром source.
Функция system() передает строку, адресуемую параметром str, в качестве команды для командного процессора операционной системы.
Если функция system() вызывается с нулевым указателем, она возвращает ненулевое значение при условии доступности командного процессора и нуль в противном случае. (Программы, выполняемые в специальных средах, могут не иметь доступа к командному процессору.) Значение, возвращаемое функцией system(), определяется конкретной реализацией. Но обычно возвращается нуль при успешном выполнении команды, а ненулевое значение кода возврата означает наличие ошибки.
Функция strtoull() добавлена в версии С99.
Функция strtoull() аналогична функции strtoul() за исключением того, что она возвращает значение типа unsigned long long int. Если результат не может быть представлен как значение типа unsigned long long int, возвращается значение ULLONG_MAX, а глобальная переменная errno устанавливается равной значению ERANGE, свидетельствующему об ошибке из-за выхода результата за пределы представимых чисел. Если параметр start не указывает на число, никакого преобразования не выполняется и функция возвращает нуль.
Функция strtoul() преобразует строковое представление числа, которое содержится в строке, адресуемой параметром start, в значение типа unsigned long и возвращает полученный результат. Основание системы счисления, в которой представлено число, определяется параметром radix. Если значение radix равно нулю, то основание определяется так же, как и основание системы счисления при записи констант. Если значение radix не равно нулю, то оно должно быть целым числом от 2 до 36.
В версии С99 к параметрам start и end применен квалификатор restrict.
Функция strtoul() работает следующим образом:
Сначала в строке, адресуемой параметром start, пропускаются пробелы, символы табуляции и пустой строки. Затем считывается число. Считывание заканчивается как только будет обнаружен символ, который не может быть частью длинного целого числа без знака. К таким символам относятся пробелы, символы табуляции и пустой строки, знаки препинания и другие символы. Наконец, параметр end устанавливается так, чтобы указывать на «неиспользованный» остаток исходной строки, если такой существует. Например, если функция strtoul() вызывается с аргументом
«100 клещей»
то она возвратит значение
100L
а параметр end будет указывать на пробел, предшествующий слову
«клещей»
Если результат не может быть представлен как длинное целое без знака, функция strtoul() возвращает значение ULONG_MAX, а глобальная переменная errno устанавливается равной значению ERANGE, что свидетельствует об ошибке из-за выхода результата за пределы представимых чисел. Если параметр start не указывает на число, никакого преобразования не выполняется и функция возвращает нуль.
Функция strtoll() добавлена в версии С99.
Функция strtoll() аналогична функции strtol() за исключением того, что она возвращает значение типа long long int. Если результат не может быть представлен как значение типа long long int, возвращается либо значение LLONG_MAX, либо значение LLONG_MIN, а глобальная переменная errno устанавливается равной значению ERANGE, свидетельствующему об ошибке из-за выхода результата за пределы представимых чисел. Если параметр start не указывает на число, никакого преобразования не выполняется и функция возвращает нуль.
Краткая справка по языку Си (для микроконтроллеров)
Пример простой программы на Си для микроконтроллера AVR
Это текст программы компиляторов типа AvrStudio, CodeVisionAVR и т.п.
Допускается из main возвращать void, хотя это не по стандарту, так что лучше int.
В функцию main можно передавать аргументы командной строки:
Вообще говоря, мы можем писать программу для MK AVR также на языке Processing/Wiring. Это тот же Си, но упрощенный. Но компилироваться это будет только в Arduino IDE или т.п., а потом можно загружать полученный hex в наш микроконтроллер. При этом не обязательно, чтобы МК стоял на плате Arduino. Разницы то нет.
Вот так выглядит аналогичная программа на Processing/Wiring:
Здесь не надо подключать хеддеры для МК, т.к. они подключатся автоматом. Но для внешних модулей могут понадобится. Короче, про Ардуино подробнее читайте здесь
а пока мы вернемся к языку Си.
Общая структура памяти программы на Си
Типы данных в Си
-Базовые типы данных: char, int, float, double.
-Модификаторы знака: signed, unsigned.
-Модификаторы знака: long, short.
При этом следущие типы равны:
В Си логический тип реализован неявно (с помощью int): false = нуль, true = не нуль.
Введение псевдонимов для ранее описанных типов данных:
Пример: typedef unsigned char byte;
Преобразование типов:
Если операнды операции имеют разные типы, то происходит неявное приведение типов:
(чтобы здесь получить 0.4 нужно было бы написать x=2.0/5 или 2/5.0)
Явное приведение типов:
Принудительное преобразование типов:
(желательно вообще избегать преобразования типов)
Переменные и константы
Переменная представляет собой блок памяти, на который мы ссылаемся по её имени (идентификатору).
Декларация переменных (вместе с инициализацией):
[класс памяти] [квалификаторы] [модификаторы] тип идентификатор = инициатор;
Допустима (хотя и редко используется) запись: const x = 100; (по умолчанию int).
Квалификаторы (или «модификаторы доступа»): const, volatile.
Возможен вариант const volatile, когда писать могут только снаружи.
Спецификторы хранения (описатель класса памяти): auto, register, extern, static.
Внешние и статические объекты существуют и сохраняют свои значения на протяжении всего времени выполнения программы.
Автоматические и регистровые объекты создаются и существуют только внутри блока, в котором они описаны, и уничтожаются при выходе из этого блока.
Описание области действия идентификаторов (имен):
Идентификатор, описанный внутри блока, известен только в этом блоке (локальный идентификатор).
Идентификатор, описанный на самом внешнем уровне, известен от места появления этого описания до конца входного файла, в котором он описан (глобальный идентификатор).
Стоит избегать использования глобальных имен.
Переменные с классом памяти static видны только в пределах текущего блока (для локальных) или в пределах файла (для объявленных глобально).
Статические переменные хранятся в сегменте данных (data) и по умолчанию инициализируются нулем. Т.е. память под static-переменные выделяется при старте программы и существует до конца программы.
Замечание: Инициализация выполняется одни раз при выделении памяти!
Статическими могут быть также функции. Такая ф-ция может исп-ся только внутри данного файла.
Следует различать присваивание и инициализацию:
— Присваивание: имя_переменной = выражение;
— Многочисленное присваивание: x = y = z = 0;
— Инициализация переменных: тип имя_переменной = константа;
Константы
Константы являются частью машинных команд и под них память не выделяется.
— символьные: 8-битные ASCII: ‘A’, ‘=’, ‘\n’, ‘\t’, ‘\370’, ‘\xF8’ (символ градуса);
Операции и операторы
В языке Си любое выражение, заканчивающееся символом «точка с запятой» (;), является оператором.
Кроме того является отдельным блоком и в нем можно определять локальные переменные.
Операции:
— Операторы сравнения (отн-ний): > >=
Порядок выполнения операторов:
— Унарные операторы выполняются справа-налево.
— Бинарные выполняются слева-направо.
— Присваивание выполняется справа-налево.
Порядок можно менять с помощью скобок!
Выражение а + b + c интерпретируется как (а + b) + с.
Оператор запятая:
левая сторона оператора вычисляется как void и не выдаёт значения, переменной x присвается значение выражения в правой стороне, т.е. y+1.
Указатели и ссылки в Си
Указатели:
класс_памяти квалификатор тип * квалификатор идентификатор = инициатор;
Основные операции над указателями:
Указатель p может ссылаться на тип void (используется в C для обобщенных алгоритмов).
Арифметика указателей отличается от обычной и зависит от типа:
Унарные операции * и ++ имеют одинаковый приоритет и выполняются справа налево, т. е.
Видео
Язык Си для начинающих / #6 - Функции в СиСкачать
Язык Си с нуля - Урок 30 - Указатель на функцию.Скачать
Фукции си rand, powСкачать
Программирование на Си урок 30: Функции ввода и вывода строк в языке СиСкачать
Функции c++ примеры. Синтаксис. Объявление, реализация функции. Параметры, аргументы. C++ #33Скачать
Язык Си для начинающих / #4 - Условные операторыСкачать