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

Стандартная билиотека - C++

Восстановить пароль Регистрация
 
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
09.09.2012, 18:00     Стандартная билиотека #1
Зачем нужная функция fabs, если abs делает всё то, что делает fabs и, даже больше?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
09.09.2012, 18:08     Стандартная билиотека #2
fabs() достался C++ по-наследству от C. В Си функция abs() принимает только целочисленные аргументы, результат, соответственно, тоже целочисленный.
В C++ функцию abs() лучше использовать исключительно в виде std::abs(), независимо от того, используется ли using namespace std, или нет.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
09.09.2012, 18:11     Стандартная билиотека #3
Затем, что в Си, откуда ноги у fabs() растут, нет перегрузки функций.
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
09.09.2012, 18:13  [ТС]     Стандартная билиотека #4
Я тоже так сначала подумал и сделал следующее:
В vs2010 заменил расширение файла .cpp на .с. После чего подключил только <math.h>
И всё равно при напечатание 1 скобочки при вызове функции выдаются различные функции abs для разных типов.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
09.09.2012, 18:15     Стандартная билиотека #5
Расширение файла никак на это не влияет.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
09.09.2012, 18:15     Стандартная билиотека #6
Цитата Сообщение от bgm313 Посмотреть сообщение
И всё равно при напечатание 1 скобочки при вызове функции выдаются различные функции abs для разных типов.
И работает тоже по-разному? Если да, то это всё-равно C++, если нет, то IDE не различает языки.
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
09.09.2012, 18:25  [ТС]     Стандартная билиотека #7
Цитата Сообщение от Toshkarik Посмотреть сообщение
Расширение файла никак на это не влияет
Почему, тогда если я меняю, расширение файла на .c и ввожу код (см.ниже), то компилятор показывает более 100 ошибок, связанных с отсутствием ;

C++
1
2
3
4
5
6
#include <iostream>
using namespace std;
 
void main(void){
    cout << 1;
}
Добавлено через 1 минуту
Цитата Сообщение от grizlik78 Посмотреть сообщение
И работает тоже по-разному? Если да, то это всё-равно C++, если нет, то IDE не различает языки.
С другой стороны в C нет перегрузки функций и поэтому довольно странно, что открывается список функций для разл. типов

Вопрос: может ли ide частично использовать язык c, а частично c++ при расширение файла .c?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2012, 18:32     Стандартная билиотека
Еще ссылки по теме:

C++ Есть ли стандартная очередь в с++?
C++ Стандартная библиотека С++11 для GCC
C++ Стандартная библиотека Си msvcrt.dll

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
09.09.2012, 18:32     Стандартная билиотека #8
Вот, можешь сравнить результат для разных языков.
Си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(void)
{
   double v1, v2;
   v1 = abs(1) / 3;
   printf("%f\n", v1);
   v2 = abs(1.0) / 3;
   printf("%f\n", v2);
   return 0;
}
C++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdio>
#include <cstdlib>
#include <cmath>
 
int main(void)
{
   double v1, v2;
   v1 = std::abs(1) / 3;
   printf("%f\n", v1);
   v2 = std::abs(1.0) / 3;
   printf("%f\n", v2);
   return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от bgm313 Посмотреть сообщение
Вопрос: может ли ide частично использовать язык c, а частично c++ при расширение файла .c?
Почему нет? В проекте допускается смешивать исходники на си и си++. Хотя IDE не должна вводить в заблуждение, а вводит, похоже.
Yandex
Объявления
09.09.2012, 18:32     Стандартная билиотека
Ответ Создать тему
Опции темы

Текущее время: 18:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru