шутки C++
От: a4reg  
Дата: 11.11.08 15:08
Оценка: :))) :))) :))) :))
Сейчас принесли код на C++. Попросили помочь найти ошибку. Ошибка была в следующем фрагменте:

  case 0x07 ,
       0x08 ,
       0x09 :


Забавно
Re: шутки C++
От: Ash-2 Россия  
Дата: 11.11.08 15:28
Оценка:
Здравствуйте, a4reg, Вы писали:

A>
A>  case 0x07 ,
A>       0x08 ,
A>       0x09 :
A>

A>Забавно

а можно пояснить...
Re[2]: шутки C++
От: Vain Россия google.ru
Дата: 11.11.08 15:32
Оценка:
Здравствуйте, Ash-2, Вы писали:

A>>
A>>  case 0x07 ,
A>>       0x08 ,
A>>       0x09 :
A>>

A>>Забавно
A2> а можно пояснить...
Видимо, человек хотел чтобы switch срабатывал одинаково для значений 0x07,0x08,0x09 одинаково, а получилось что он сработал только для 0x09 из-за специфики оператора ",".
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: шутки C++
От: Ash-2 Россия  
Дата: 11.11.08 15:43
Оценка:
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, Ash-2, Вы писали:


A>>>
A>>>  case 0x07 ,
A>>>       0x08 ,
A>>>       0x09 :
A>>>


а оно будет компилироваться? (сейчас нет возможности проверить...)
Re[4]: шутки C++
От: Ash-2 Россия  
Дата: 11.11.08 15:44
Оценка:
Здравствуйте, Ash-2, Вы писали:

A2>а оно будет компилироваться? (сейчас нет возможности проверить...)

ступил... sorry
Re: шутки C++
От: algol Россия about:blank
Дата: 11.11.08 16:02
Оценка:
Здравствуйте, a4reg, Вы писали:

A>Сейчас принесли код на C++. Попросили помочь найти ошибку. Ошибка была в следующем фрагменте:


Ну, на Visual Basic именно так и пишут. Код, случаем, не от индийских товарищей?
Re: шутки C++
От: WPooh США  
Дата: 11.11.08 21:50
Оценка: 2 (1)
Здравствуйте, a4reg, Вы писали:

A>Забавно

Аналогично (по памяти, только идея ):
  for (int i = 0, j = 0; i < firstBoundaryLimit, j < secondBoundaryLimit; ++i, ++j){ ... }

В основном, это работало, так как массивы преимущественно использовались одномерные, но иногда ...
Что показательно, конструкция обладает некоторой визуальной симметрией по параметрам цикла.
Причем, автор кода — чистый "плюсовик", опыт работы — больше 10 лет.
Дарю идею, как вопрос для собеседования кандидатов.
К этому моменту у меня внутри 0.5, 0.7, 0.33 (с) НС
Re: шутки C++
От: e-Xecutor Россия  
Дата: 12.11.08 06:14
Оценка: :))) :)
Здравствуйте, a4reg, Вы писали:

A>Сейчас принесли код на C++. Попросили помочь найти ошибку. Ошибка была в следующем фрагменте:


A>
A>  case 0x07 ,
A>       0x08 ,
A>       0x09 :
A>


A>Забавно


Вот еще шедевр, вчера нашел:
return param.c_str()!=""?param.c_str():"";


Автор давно уволился, ибо считал, что его не ценят должным образом...
Re: шутки C++
От: Muxa  
Дата: 12.11.08 07:35
Оценка:
Здравствуйте, a4reg, Вы писали:

A>Сейчас принесли код на C++. Попросили помочь найти ошибку. Ошибка была в следующем фрагменте:


A>
A>  case 0x07 ,
A>       0x08 ,
A>       0x09 :
A>


A>Забавно

что забавного?
Error 1 error C2051: case expression not constant

может я чота не так понял?
char* getTest(int n){
    switch (n){
    case 1: return "1";
    case 4: return "4";
    case 5: return "5";
    case 6: return "6";
    case 8, 9: return "8, 9";
    default: return "default";
    }
}

int main(int argc, char* argv[]){
    for (int i = 0; i < 10; i++)
        printf("%d - %s", i, getTest(i));
    return 0;
}
Re[3]: шутки C++
От: dzkras  
Дата: 12.11.08 08:37
Оценка:
Здравствуйте, Vain, Вы писали:

V>Здравствуйте, Ash-2, Вы писали:


A2>> а можно пояснить...

V>Видимо, человек хотел чтобы switch срабатывал одинаково для значений 0x07,0x08,0x09 одинаково, а получилось что он сработал только для 0x09 из-за специфики оператора ",".

А для тех, кто совсем не в теме, что делает этот оператор вплюсах?
Re[4]: шутки C++
От: dotidot Россия  
Дата: 12.11.08 09:05
Оценка:
Здравствуйте, dzkras, Вы писали:

D>А для тех, кто совсем не в теме, что делает этот оператор вплюсах?

в данном случае просто возвращает свой второй аргумент.
А вообще, поскольку аргументы в С++ вычисляются до вызова, то запись вида
c = a += 1, b;
даже имеет смысл. Ну и еще запятую ставят в сигнатурах функций и списках шаблонных аргументов.(ну в макросах еще, но это не с++)
Больше ничего про запятую в С++ не помню
Re[5]: шутки C++
От: alzt  
Дата: 12.11.08 09:18
Оценка:
Здравствуйте, dotidot, Вы писали:


D>Ну и еще запятую ставят в сигнатурах функций и списках шаблонных аргументов.(ну в макросах еще, но это не с++)

D>Больше ничего про запятую в С++ не помню

Только это другая запятая.
Её перегрузить не получится, например.
Re[2]: шутки C++
От: alzt  
Дата: 12.11.08 09:19
Оценка:
Здравствуйте, e-Xecutor, Вы писали:

EX>Вот еще шедевр, вчера нашел:

EX>
EX>return param.c_str()!=""?param.c_str():"";
EX>


EX>Автор давно уволился, ибо считал, что его не ценят должным образом...


А что в истории изменений?
Re: шутки C++
От: R.O. Prokopiev Россия http://127.0.0.1/
Дата: 12.11.08 11:16
Оценка:
Здравствуйте, a4reg, Вы писали:

A>Сейчас принесли код на C++. Попросили помочь найти ошибку. Ошибка была в следующем фрагменте:


A>
A>  case 0x07 ,
A>       0x08 ,
A>       0x09 :
A>


A>Забавно


Типичная пасквилянтская ошибка
Re[2]: шутки C++
От: ol-lv СССР https://youtu.be/DQDoYs6wHoo
Дата: 12.11.08 11:17
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Здравствуйте, a4reg, Вы писали:


A>>Сейчас принесли код на C++. Попросили помочь найти ошибку. Ошибка была в следующем фрагменте:


A>>
A>>  case 0x07 ,
A>>       0x08 ,
A>>       0x09 :
A>>


A>>Забавно

M>что забавного?
M>Error 1 error C2051: case expression not constant

M>может я чота не так понял?

M>
M>char* getTest(int n){
M>    switch (n){
M>    case 1: return "1";
M>    case 4: return "4";
M>    case 5: return "5";
M>    case 6: return "6";
M>    case 8, 9: return "8, 9";
M>    default: return "default";
M>    }
M>}

M>int main(int argc, char* argv[]){
M>    for (int i = 0; i < 10; i++)
M>        printf("%d - %s", i, getTest(i));
M>    return 0;
M>}
M>

Очевидно компиллеры разные на VC 8-ой invalid constant expression
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Re: шутки C++
От: alpha21264 СССР  
Дата: 12.11.08 13:41
Оценка:
Здравствуйте, a4reg, Вы писали:

A>Сейчас принесли код на C++. Попросили помочь найти ошибку. Ошибка была в следующем фрагменте:


A>
A>  case 0x07 ,
A>       0x08 ,
A>       0x09 :
A>


A>Забавно


Я тебе таких шуток вспомню...
for( i=0 ; i<Str[i]!=0 ; i++ )
if( Str[i]==' ' )
Str[i]=='_' ;

Течёт вода Кубань-реки куда велят большевики.
Re: шутки C++
От: Шебеко Евгений  
Дата: 12.11.08 17:26
Оценка:
Мне нравится:
int v=0;
v;

Ничего плохо, просто забавно что компилируется.
Понимаешь всю глубину плюсов
Re[2]: шутки C++
От: WPooh США  
Дата: 13.11.08 19:18
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

ШЕ>Мне нравится:

ШЕ>
ШЕ>int v=0;
ШЕ>v;
ШЕ>

ШЕ>Ничего плохо, просто забавно что компилируется.
ШЕ>Понимаешь всю глубину плюсов
Ну дык стандартный ход, чтобы заткнуть warning про неиспользуемую переменную.
Чаще используется для ненужных входных параметров, когда нельзя менять сигнатуру (типа интерфейс).
Если нужно чтобы компилялось на разных платформах, pragma-то у всех разная, так что не заюзаешь без ifdef.
Более-менее кошерно. Оптимизатор все равно выкинет.
К этому моменту у меня внутри 0.5, 0.7, 0.33 (с) НС
Re[3]: шутки C++
От: ДимДимыч Украина http://klug.org.ua
Дата: 13.11.08 21:46
Оценка:
Здравствуйте, WPooh, Вы писали:

WP>Более-менее кошерно. Оптимизатор все равно выкинет.


Неоднократно видел такой вариант:
v = v;
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[2]: шутки C++
От: Alexander G Украина  
Дата: 13.11.08 22:40
Оценка:
Здравствуйте, Шебеко Евгений, Вы писали:

ШЕ>Мне нравится:

ШЕ>
ШЕ>int v=0;
ШЕ>v;
ШЕ>


А мне такое:
void T::instance(void)
{
  static T t;
  return (void)t;
}
Русский военный корабль идёт ко дну!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.