Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите начинаюшему

11K
08 августа 2005 года
Russish
6 / / 25.07.2005
Скажите вот простая функция abs() в MicroVis C++ предлагает выбрать разные типы входных аргументом (параметров). Я выбираю float, а транслятор пишет
Warning: float to int possible loss of data
Так как выбрать, чтобы abs() работал с float:{
1.9K
08 августа 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by Russish
Скажите вот простая функция abs() в MicroVis C++ предлагает выбрать разные типы входных аргументом (параметров). Я выбираю float, а транслятор пишет
Warning: float to int possible loss of data
Так как выбрать, чтобы abs() работал с float:{


 
Код:
#define abs(x) ((x) > 0?(x):-(x))
2.0K
08 августа 2005 года
WidowMaker
212 / / 05.04.2005
 
Код:
#define abs(x) ( (x)<0 ? -(x) : (x) )

Для общего развития:
есть флоатовская ф-ция abs - fabs (ей уже лет 15)
1.9K
08 августа 2005 года
solovey
113 / / 25.07.2004
Цитата:
Originally posted by WidowMaker
 
Код:
#define abs(x) ( (x)<0 ? -(x) : (x) )

Для общего развития:
есть флоатовская ф-ция abs - fabs (ей уже лет 15)

а эта работает с любыми числовыми типами данных :)

492
08 августа 2005 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by solovey
а эта работает с любыми числовыми типами данных :)


Макрос достаточно опасная штука. Она не производит проверку типа. И если ей передать какую-нибудь структуру, то неизвестен результат выполнения...

2.0K
08 августа 2005 года
WidowMaker
212 / / 05.04.2005
Цитата:
Originally posted by alibabaich
Макрос достаточно опасная штука. Она не производит проверку типа. И если ей передать какую-нибудь структуру, то неизвестен результат выполнения...


Макросы вообще не оправдывают доверия к ним.
У меня за время их использования ни разу польза
от них не компенсировала головную боль, связанную
с поиском ошибок и т.п.

Мой ответ макросам - шаблоны:D

3
08 августа 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by WidowMaker

Мой ответ макросам - шаблоны:D



Макросы, к сожалению, невсегда можно заменить шаблонами.

2.0K
08 августа 2005 года
WidowMaker
212 / / 05.04.2005
Использование макросов не является обязательным.
AFMe(субъективно) так макрос-функции они еще и признак дурного тона (вроде goto)
7.0K
09 августа 2005 года
mixell
28 / / 03.04.2005
макросам - шаблоны ???????

макросы - это подстановка лексемы ПЕРЕД КОМПИЛЯЦИЕЙ !

- а шаблоны - обеспечивают непосредственную
поддержку обобщенного программирования !!

- ЧТО тут менять - ???????????????
299
09 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by mixell
макросам - шаблоны ???????

макросы - это подстановка лексемы ПЕРЕД КОМПИЛЯЦИЕЙ !

- а шаблоны - обеспечивают непосредственную
поддержку обобщенного программирования !!

- ЧТО тут менять - ???????????????



Ты просто не родился WidowMaker'ом, которые умеет использовать шаблоны в качестве макросов)))

11K
09 августа 2005 года
Russish
6 / / 25.07.2005
Если позволите, то еще вопрос:
Код:
#include <iostream>
char inter[6];

void SM_Console(char *p)
{
    if(inter=="next") std::cout << "Yes";
    if(inter!="next") std::cout << "No !";
}

void main()
{
    std::cin >> inter;
    SM_Console(inter);
    //здесь чтобы можно было увидить результат  {
    char s;
    std::cin >> s;
    // }
}


Как ни странно но даже если inter="next" то на выводе всегда будет NO ! :???: :-?
492
09 августа 2005 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by Russish
Если позволите, то еще вопрос:
Код:
#include <iostream>
char inter[6];

void SM_Console(char *p)
{
    if(inter=="next") std::cout << "Yes";
    if(inter!="next") std::cout << "No !";
}

void main()
{
    std::cin >> inter;
    SM_Console(inter);
    //здесь чтобы можно было увидить результат  {
    char s;
    std::cin >> s;
    // }
}


Как ни странно но даже если inter="next" то на выводе всегда будет NO ! :???: :-?


Все верно, ты передаешь только первый символ.
Кстати если кто-нибудь кода-нибудь писал конечные автоматы, то знает что goto это не признак дурного тона, а всего лишь удобный оператор безусловного перехода. Стили бывают разные...

2.0K
09 августа 2005 года
WidowMaker
212 / / 05.04.2005
 
Код:
void SM_Console(char *p)
{
if(!strcmp(iter,"next"))std::cout << "Yes";
else std::cout << "No !";
}

2 alibabaich:
AFMe(as for me)-это только мое, конечно же
субъективное, мнение.
2 3D Bob : эт точно

Мысль была в опасности(не удобстве работы с большими проектами) увлечения использованием макросов.
299
09 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by alibabaich
Все верно, ты передаешь только первый символ.
Кстати если кто-нибудь кода-нибудь писал конечные автоматы, то знает что goto это не признак дурного тона, а всего лишь удобный оператор безусловного перехода. Стили бывают разные...




Скорее даже не символ, а указатель на самый первый символ. Вот так правильней.

492
09 августа 2005 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by 3D Bob
Скорее даже не символ, а указатель на самый первый символ. Вот так правильней.


Да...

3
09 августа 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by WidowMaker
Использование макросов не является обязательным.


Применение шаблонов - тоже не является обязательным. :)

Минус шаблонов в том, что параметром шаблона может быть только интегральный тип. Поэтому к примеру не получится склеить две строки, что можно сделать с помощью макроса.

P.S. Я говорю о времени компиляции.

2.0K
09 августа 2005 года
WidowMaker
212 / / 05.04.2005
Цитата:
Originally posted by Green
Применение шаблонов - тоже не является обязательным. :)

Минус шаблонов в том, что параметром шаблона может быть только интегральный тип. Поэтому к примеру не получится склеить две строки, что можно сделать с помощью макроса.

P.S. Я говорю о времени компиляции.


Согласен.

11K
10 августа 2005 года
Russish
6 / / 25.07.2005
А нельзя чуть-чуть по подробнее про шаблоны, вещь все-таки редкая или наравне с операцией (=) присвоения :)
3
10 августа 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Russish
А нельзя чуть-чуть по подробнее про шаблоны, вещь все-таки редкая или наравне с операцией (=) присвоения :)


Не понял каламбур про операцию присвоения.
А вот шаблоны не такая уж и редкая вещь. Все зависит от степени владения языком С++ и опытом его применения.
Что именно тебя интересует про шаблоны?
Желательно вопросы выходящие за рамки описанные Страуструпом.

299
10 августа 2005 года
3D Bob
885 / / 18.04.2005
Ничуть не редкая.
Например, я вообще не представляю как я бы жил без контейнеров.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог