Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.64
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Что за функция fabs(int)? - C++

12.04.2013, 19:44. Просмотров 5298. Ответов 9
Метки нет (Все метки)

Что за функция fabs(int)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2013, 19:44     Что за функция fabs(int)?
Посмотрите здесь:

Функция fabs! - C++
Здравствуйте, объясните пожалуйста, как можно проще, что из себя представляет ф-ция fabs! Если можно, то с элементарными примерами...

Что и почему дописать в int main() чтобы функция void вернула значение - C++
Что и почему дописать в int main() чтобы функция void вернула значение? #include <stdio.h> #include <math.h> #include <iostream.h>...

Что это такое int (*func4 (void)(int) - C++
Это примеры указателей на функцию. Понятно.void (*func1) (void *, int *); void (*func2) (int, int *); void (*func3) (void); А это что...

Функция int isdigit(int С) - C++
Чот мучился с ней так и не сообразил как организовать решение задачи: с бинарного файла считываются цифры и латинские буквы, а после буквы...

Объясните что делает int z(int a) - C++
вот весь исходный код #include <iostream> #include <stdio.h> #include <cmath> using namespace std; int z(int a) { int x, y,...

int[][] или int[] - что быстрее? - C++
Везде вижу, что лучше использовать одномернный массив, а не двумерный. Всегда принимал это на правду, но сейчас задумался. Нужели умножение...

int main () { int a=3,b=2,c; c=a+b; cout << "c=" << c; } Что не правильно? - C++
#include &lt;iostream&gt; using namespace std; int main () { int a=3,b=2,c; c=a+b; cout &lt;&lt; &quot;c=&quot; &lt;&lt; c; }в чем...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 715
12.04.2013, 19:48     Что за функция fabs(int)? #2
Цитата Сообщение от taras atavin Посмотреть сообщение
Что за функция fabs(int)?
модуль вещественных чисел возвращает
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
12.04.2013, 19:51     Что за функция fabs(int)? #3
Функция fabs (Floating-point ABSolute value), объявленная в заголовочном файле <cmath> или <math.h> принимает вещественный аргумент (не int, а float, double или long double) и возвращает его абсолютное значение (модуль). Легко находится в документации по стандартным функциям C или C++.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.04.2013, 19:57  [ТС]     Что за функция fabs(int)? #4
Цитата Сообщение от abit Посмотреть сообщение
модуль вещественных чисел возвращает
А почему в тексте EZFONT у неё целый фактический параметр?
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
12.04.2013, 20:02     Что за функция fabs(int)? #5
C++11
26.8.11:
Moreover, there shall be additional overloads sufficient to ensure:
1. If any argument corresponding to a double parameter has type long double, then all arguments corresponding to double parameters are effectively cast to long double.
2. Otherwise, if any argument corresponding to a double parameter has type double or an integer type, then all arguments corresponding to double parameters are effectively cast to double.
3. Otherwise, all arguments corresponding to double parameters are effectively cast to float.
Как я понимаю, в соответствии с этим должен существовать fabs(int).
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
12.04.2013, 20:08     Что за функция fabs(int)? #6
C++
1
2
3
4
5
6
7
8
void foo(float x)
{}
 
int main()
{
    const int y = 42;
    foo(y);  // неявное преобразование целочисленной константы к типу float
}
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
12.04.2013, 20:16     Что за функция fabs(int)? #7
Но в пункте 26.8.9 сказано, что к сишной fabs(double) добавляются ещё fabs(float) и fabs(long double), так что тут с int'ом была бы неоднозначность, если не добавить fabs(int).
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
12.04.2013, 20:26     Что за функция fabs(int)? #8
Получается, что придётся тогда добавлять перегрузки и для всех остальных целочисленных типов. Посмотрел реализацию в gcc - никаких "лишних" перегрузок помимо того, что указано стандартом, и в то же время неоднозначности не возникает, для неявного преобразования выбирается тип double, в полном соответствии с пунктом 2 вышеприведённого текста.
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 715
12.04.2013, 20:26     Что за функция fabs(int)? #9
Цитата Сообщение от Somebody Посмотреть сообщение
Но в пункте 26.8.9 сказано, что к сишной fabs(double) добавляются ещё fabs(float) и fabs(long double), так что тут с int'ом была бы неоднозначность, если не добавить fabs(int).
в чём заключается неоднозначность? что при int не известно к чему неявно преобразовывать?

тут - http://www.cplusplus.com/reference/cmath/fabs/

чётко сказанно

In C++, abs is also declared in this header with the same behavior.
Я это понимаю, что в C++ сделали fabs(int) = abs(int)

далее если почитаете, ниже

In C, only the double version of this function exists with this name.
это значит, что в чистом Си она всегда к double переводилась


никаких неоднозначностей...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2013, 21:00     Что за функция fabs(int)?
Еще ссылки по теме:

_beginthread и функция возвращающая int - C++
Здравия! Я тут никак не могу понять, как запустить функцию, возвращающую целое значение в отдельном потоке. Делаю так: int...

Функция возвращающая указатель на int - C++
Не могу понять ошибки. // prata 7 pt to function.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot;...

C++ задача. Функция типа int - C++
Разработать функцию типа int. которая возвращает меньшее среди кубов двух параметров.

функция pow для int - C++
собственно говоря проблема такая - мне нужно возвести целое число в целую степень. Например я пишу так double f(int x,int y) { ...

ошибка с fabs - C++
Приветствую. Проблема в обще в том, что вылетает ошибка вовремя выполнения проги на отмеченной строчке. В принципе в этой функции мне нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
12.04.2013, 21:00     Что за функция fabs(int)? #10
Цитата Сообщение от abit Посмотреть сообщение
это значит, что в чистом Си она всегда к double переводилась
Исторически в C была только double fabs(double). Это было давно. В C99 добавили float fabsf(float x) и long double fabsl(long double x). И ещё добавили хедер tgmath.h, при подключении которого implementation-defined способом получалось три fabs'а (с одинаковым именем!) - для float, double и long double. В C11 добавили generic selection expression, с помощью которого можно самому такую "перегрузку" устроить. А в C++11 просто делают совместимость с C, только вот проблема: у _Generic() есть default, а у плюсовой перегрузки нет.
Yandex
Объявления
12.04.2013, 21:00     Что за функция fabs(int)?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru