| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > switch ( a , b ) |
| Автор: xperienced 13.4.2011, 16:54 | ||||||||
| Здравствуйте. Разгребаю один сишный (не ++) код и вижу такое:
Взял с полки Кернигана и Ритчи, сдул пыль, открыл на операторе switch. Читаю:
Ну, думаю, ладно. Раз написано выражение, попробую так:
и посмотрю в дебаге значение переменной tmp. Но, к счастью, оно не скомпилилось. Привожу полный код:
В ходе дебага эта конструкция ведёт себя так, как если бы там просто было nal. Вопрос: как это называется и где об этом написано? И главное: зачем такое надо? |
| Автор: bsa 13.4.2011, 17:31 |
Это называется "оператор `запятая`", написано в стандарте. Результат очереди разделенной запятыми является значение полученное при самом последнем действии. Программист хотел показать, на сколько он умен. Хотя, тем самым он показал, на сколько он глуп и недальновиден. Код надо писать так, чтобы понять его можно было без обращения к стандарту. |
| Автор: xperienced 14.4.2011, 08:55 |
| спасибо |
| Автор: ИванМ 14.4.2011, 11:10 |
| Руки надо оторвать этому программисту. А goto в придачу улыбает. |
| Автор: xperienced 14.4.2011, 13:33 | ||
| Да, там код весь гоуту усыпан. А ещё есть вот такие вещи:
Не знаю, может кому это и привычно. Я довольно долго соображал, что же это такое. |
| Автор: borisbn 14.4.2011, 19:55 |
| > А ещё есть вот такие вещи Ставлю на то, что аффтар увольнялся и решил над тобой поиздеваться Резюме - расстреливать надо за такое |
| Автор: boostcoder 14.4.2011, 20:40 |
| http://evalsvc.googlecode.com/svn-history/r149/trunk/etmp4/mp4trace.c |
| Автор: borisbn 14.4.2011, 21:30 |
| boostcoder, убил. наповал. срочно принять закон РФ, чтобы за такое расстреливать. 3 раза. |
| Автор: bsa 15.4.2011, 15:54 | ||
Я пишу под 8-ми битный микроконтроллер. Там тоже памяти мало, нет операций умножения и деления... И ничего. Почему-то goto мне использовать не пришлось... Да и таких заумных конструкций тоже. Компилятору сугубо фиолетово, сколько операций напихано в строчку. Все равно он их разобьет на элементарные. Поэтому, нечего пинять на медленные процессоры и маленькую память. Если программист дурак, то от глупостей его уже ничего не спасет. |
| Автор: Earnest 15.4.2011, 20:25 |
| bsa, это не глупость, а просто другие времена. 20 лет назад код писали не так как сейчас. Наверное, это что-то вроде останков "ассемблерного" мышления в терминах регистров и отдельных переменных... Иногда мне приходится ковыряться в своем же коде ~10-летней давности (кое-что до сих пор работает и в переписывании особо не нуждается), я его просто с трудом понимаю - настолько стиль мышления изменился. А что еще раньше было, вообще с трудом уже представляю. На моей памяти концепции несколько раз менялись... И нельзя сказать, что в этом деле наблюдаются сплошные плюсы... но это уже совсем другая тема. |