Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Почему возникает compilation error на Си(++)? Дома все компилируется нормально, работает. компилирую так: g++ ./main.c -o main, ни одной ошибки и предупреждения.,ОС linux.
1
  1  Мирный, 30 марта 2010 г. 22:27:06
      Мож кому пригодится, моноC# не компилит long, просит int. Столкнулся на днях с тем, что если сервер на *nix, то за шарп можно сразу забывать, даже не представлял что он там НАСТОЛЬКО урезаный! Ругается вообще на всё подряд!
  2  Сам, 27 марта 2010 г. 9:16:18
      Спасибо!
  3  Демиденко Виталий, 27 марта 2010 г. 7:19:49
      Нияз, у меня тоже g++ на это не ругается. Был у меня недавно случай, что и делфи на это ругался, когда я ln( int ) вычислял.
  4  Нигматуллин Нияз Габдуллазянович [СПбГУ ИТМО], 27 марта 2010 г. 2:26:12
      не понятно, почему компилятор msvc и intel не может нормально кастить передаваемые int в double
  5  Нигматуллин Нияз Габдуллазянович [СПбГУ ИТМО], 27 марта 2010 г. 2:16:28
      >> 3 Демиденко Виталий, 26 марта 2010 г. 19:43:38
>> Нет, это не из-за этого, это же си. Тут ошибка из-за того, что в функции sqrt(); нельзя указывать тип int, надо либо (double), либо >> *1.0
а почему при присвоении double должен каститься к int, а при передаче аргумента int не должен каститься к double.
у меня sqrt от int'a компилируется без warning'ов, компилятор g++.
  6  dAFTc0d3r Делюкин Максим, 27 марта 2010 г. 0:18:17
      sqrt( int ) это точно ошибка здесь, как и говорилось. =)
Одныжды у меня (буквально в этом марте, на личном оффлайн контесте) пограмма, компилирующаяся у меня, получала вердикт Compilation Error, оказалось, что виновата оказалсь перегруженная мною функция double abs( double d ). Моя программе действительно не скомпилировалась, когда я поменял Debug на Release в настройках сборки проекта (теперь постоянно пишу ab(...) ).
в-третьих - А зачем, извините, здесь abs? =) =) =)
а в-четвертых... Не стоит делать первый пост ОЧЕНЬ БОЛЬШИМ (читай длинее двух строчек). =)
  7  Бороздин Кирилл Андреевич, 26 марта 2010 г. 20:57:06
      Да, действительно, в Visual Studio нет перегруженной версии sqrt для целых чисел. Приходится приводить к double или float
  8  Демиденко Виталий, 26 марта 2010 г. 19:43:38
      Нет, это не из-за этого, это же си. Тут ошибка из-за того, что в функции sqrt(); нельзя указывать тип int, надо либо (double), либо *1.0
  9  Бахабиев Эмиль, 26 марта 2010 г. 19:37:29
      int gip = sqrt((abs(x1 - x2)) * (abs(x1 - x2)) + (abs(y1 - y2)) * (abs(y1 - y2)));
Понятно, что лажа идет в этой строчке - ты присваеваешь целому числу вещественное значение.
вместо int gip пиши double gip.
  10  Шмидт Андрей Андреевич [AS PPS] (SKYDOS), 26 марта 2010 г. 19:22:44
      прочитай ошибку компилятора в самом низу просмотра кода красными буквами на этом сайте
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru