Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2014, 18:42   #1
Деник
Пользователь
 
Регистрация: 26.09.2013
Сообщений: 10
По умолчанию задача на с#

Здравствуйте, вообщем интересовался задачками которые обычно задаю (по словам автора сайта) на собеседовании, конечно мне до собеседования как до луны : ) и все же было интересно, и наткнулся на токую задачку с решение
---
* Какое значение присвоено x, если приведенный ниже код выводит False?
Код:
float x;
Console.Write(x == x);
Ответ: по спецификации это особенность NaN. Т.е. float x = float.NaN;
---
честно я не понял не задачу не решение, кому не лень поясните чуток

каким боком оператор сравнения которые используется при выводе на экран, должен показать false, учитывая что переменая float
Деник вне форума Ответить с цитированием
Старый 14.01.2014, 10:35   #2
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

потому что ты значение не задал
Guy вне форума Ответить с цитированием
Старый 14.01.2014, 11:28   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Guy Посмотреть сообщение
потому что ты значение не задал
да нет.. Вы не правы. Если не задать значения x, то код вообще не пройдёт компиляцию!

А имеется в виду следующее:
Код:
float x;
x = ?????;
Console.Write(x == x);
вопрос, что нужно поставить в коде вместо знаков вопроса, что Console.Write(x==x) выдало false


ответ:
Код:
x = float.NaN;

Последний раз редактировалось Serge_Bliznykov; 14.01.2014 в 11:31.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.01.2014, 18:38   #4
Деник
Пользователь
 
Регистрация: 26.09.2013
Сообщений: 10
По умолчанию

Serge_Bliznykov, спасибо, чуток прояснилось )
Деник вне форума Ответить с цитированием
Старый 14.01.2014, 19:49   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,886
По умолчанию

Дело в том, что NaN не равен чему-то определённому, т.е. нан это неопределённость.
Not-A-Number - не число. По определению, неопределённость не может быть равна/эквивалентна ничему другому, даже другой неопределённости, отсюда NaN != NaN
По сути, нан это общая концепция, мало зависящая от языка. И в спецификации языка C# эта концепция реализуется во float.NaN .
Подобная вещь есть в SQL , там это NULL, он не равен ничему, даже другому нуллу.

Оператор сравнения используется в выражении, выражение вычисляется при обращении к выражению, выражение состоящее из операторов сравнения выдаёт результатом булевую (логическую) величину. Эта величина поступает на вход функции Console.Write и преобразуется в строку для вывода на консоль, соответственно печатая "false"
phomm вне форума Ответить с цитированием
Старый 14.01.2014, 23:39   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Оператор сравнения используется в выражении, выражение вычисляется при обращении к выражению, выражение состоящее из операторов сравнения выдаёт результатом булевую (логическую) величину
а если так
Код:
if (x = !y)
eval вне форума Ответить с цитированием
Старый 14.01.2014, 23:54   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
а если так
Код:
if (x = !y)
ЕСЛИ Х ПРИСВОИТЬ НЕ Y ИСТИНА ТО ....

и сработает только если это булевы типы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.01.2014, 00:35   #8
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
и сработает только если это булевы типы
и не скомпилируется вообще, если это C#
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 15.01.2014, 00:52   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а у меня скомпилировалось, странно все это
eval вне форума Ответить с цитированием
Старый 15.01.2014, 12:16   #10
Деник
Пользователь
 
Регистрация: 26.09.2013
Сообщений: 10
По умолчанию

спасибо ребят! отлично раскрыли тему, есть куда копать : )
Деник вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на зачёт. проблема Задача на нобелевскую премию! Sabotage5 Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2013 15:18
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51