URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7399
[ Назад ]

Исходное сообщение
"warning при кастинге"

Отправлено roman , 04-Июн-08 09:10 
Приветствую.

Пусть дан простой код:

#include <math.h>

long hyp(long height, long base)
{
    return sqrt(height * height + base * base);
}

int main(void)
{
   long h = hyp(10, 20);
   return 0;
}

Компилирую на debian 4.0 (gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)):
#gcc -ansi -pedantic -W -Wall -lm b.c

Как я понимаю, по стандарту sqrt возвращает double, мы присваиваем long'у, что должно приводить к потере информации. Но ворнинга нет, почему?

Спасибо.


Содержание

Сообщения в этом обсуждении
"warning при кастинге"
Отправлено Fisher , 04-Июн-08 14:29 
http://www.opennet.me/docs/RUS/linux_parallel/node248.html
попробывать опцию добавить -O2. Попробывать удалить файл *.o (должен появиться при первой компиляции)и скомпилировать заново.


"warning при кастинге"
Отправлено roman , 04-Июн-08 15:05 
>http://www.opennet.me/docs/RUS/linux_parallel/node248.html
>попробывать опцию добавить -O2. Попробывать удалить файл *.o (должен появиться при первой
>компиляции)и скомпилировать заново.

нет, ничего не помогает


"warning при кастинге"
Отправлено primus , 08-Июн-08 15:13 
мнится мне, дело в том, что Вы вызываете компилятор С.
А С смотрит на всякие неаккуратности сквозь пальцы.
Компильните Ваш файл с помощью g++  и Вы увидите
соответствующие варнинги.