Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

вопрос о типах в C

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Трэш



Зарегистрирован: 06.06.2010
Сообщения: 1

СообщениеДобавлено: Вс Июн 06 2010 18:45    Заголовок сообщения: вопрос о типах в C Ответить с цитатой

есть программа вида
...
int n;
......
if(n!=-2)
{...}
....

Вопрос: что изменится при замене строчки if(n!=-2) на строчку if(n!=-2.)? Речь идёт о т.н. "чистом" C.

Понимаю, что вопрос дурацкий, но в моём распоряжении имеется лишь Visual Studio 2005, чей компилятор C++ на эту точку наплевал и не выдаёт никакой разницы. Sad

P.S. Ответ "ничего не изменится" преподом отвергается начисто.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Пн Июн 07 2010 14:32    Заголовок сообщения: предел мечтаний совр. молодого программиста -- очередной VS Ответить с цитатой

Трэш писал(а):
имеется лишь Visual Studio 2005, чей компилятор C++ на эту точку наплевал и не выдаёт никакой разницы
сначала вопрос: а как ты узнал, что VC++ не выдаёт разницы? что с чем ты сравниваешь? и -- главное -- при какие опциях компиляции?

из ответа на эти вопросы закономерно вылезет ответ на
Трэш писал(а):
что изменится при замене строчки if(n!=-2) на строчку if(n!=-2.)?
"-2." -- это тип реал или дабл, а "-2" -- какой-нибудь из интов. во 2-м случае компилятор должен перед сравнением преобразовать оба числа к одному типу, а именно: к типу "-2.". то есть окончательный размер должен удлиниться
------------------------------------------------------------------------------
предел мечтаний современного молодого программиста -- очередной VS
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Вт Июн 08 2010 20:18    Заголовок сообщения: Ответить с цитатой

Строго говоря при объявленном int n, на попытку его сравнения с дробной константой компилятор должен выдать джентельментское предупреждение, мол сравниваете мальца неверно и я константу приведу к целому типу, прежде чем бинарный код генерить. Но выдавать такое или нет, сильно зависит от IDE (среды разработки) и опций с которыми запускается компилятор.

"Чистота" Си тут мало при чем.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
yw



Зарегистрирован: 21.10.2009
Сообщения: 15

СообщениеДобавлено: Ср Июн 09 2010 23:06    Заголовок сообщения: Ответить с цитатой

> я константу приведу к целому типу

Переменную к типу 'double'

Затем сравнятся 2 вещественных значения . Если бы хотя бы одно из них было получено посредством например 'atof' или 'sscanf' , тогда с большой вероятностью (зависит от компилятора) возникнет ошибка в 17-м десятичном знаке , и значения могут оказаться разными . Но в данном случае поведение программы останется прежним после подмены '2' на '2.'
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...