January 23, 2007

Магия чисел против коллективного разума

(Хотя, наверное, лучше было бы сказать совсем наоборот, потому как коллективный разум, всё же победил!)

Некоторое время назад мой коллега обнаружил, что на его машине самым магическим образом стала обрабатываться цифра "7". Всем известно, что "7" это магическое число. Кто-то считает его счастливым, кто-то наоборот, но нам оно стоило нескольких непростых часов, проведённых в бесплодных попытках понять что же всё-таки происходит.

Симптомы следующие: есть некоторое поле ввода, значением которого является число (в строковом представлении, конечно). Соответственно, есть операция преобразования строки в число. Так вот эта самая операция давала неожиданные результаты:

Получается, что к ошибке приводит только первая семёрка в строке. Интересны так же, так сказать, side effects. Visual Studio всё отлично собирает, но при этом ругается если семёрка объявлена как значение константы. Дальше больше. Собранный на испорченной машине exe без проблем запускается и правильно работает на других машинах. Написали код попроще, тот который просто парсит строчку, переданную в качестве параметра, чтобы откинуть все лишние возможности внести ошибку. Результат тот же.

Прошло N часов. Произведена переустановка Microsoft .Net Framework, кажется, даже Visual Studio. В голову стали закрадываться мысли типа "а не снести ли Винду". И тут мне вспомнилось, как однажды, давным давно, на мой вопрос, заданный на форуме sql.ru, в течение 10 минут был получен простой ответ. Конец света откладывается. Идём на форум RSDN.

Первый ответ не поразил новизной - "переставь Винду". Отнекиваемся. Ждём. И вот спустя какое-то время...  Вуаля!

Оказалось, что в настройках локализации можно в качестве знака отрицания указать любой символ. Угадайте что было указано на "поломанной" машине?! Шутка хумора, однако.

Всвязи с этим вспомнилась ещё шуточка: #define i j.

P.S.: Кто изменил локаль так и осталось загадкой.


Comments:
Хороший прикол! Знать бы раньше, можно б было в лабораторной в институте повеселиться...

 


Браво )

 


Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?