Re[9]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 21:05
Оценка:
Здравствуйте, Kemm, Вы писали:

K>Здравствуйте, Анатолий Широков, Вы писали:


K>>>А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))

АШ>>

АШ>>5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;


K>Спасибо. А зачем это было сделано, интересно?


Программа достигла конца main и значит она завершилась и завершилась "успешно" (код возврата 0), без ислючений и прочего.
Re[3]: издевательства над switch-ем на собеседовани
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 04.12.05 21:17
Оценка: :)
Здравствуйте, kittown, Вы писали:

K>default: std::cout << "whaaat??" << std::endl;


Не "whaaat??", а задачка из "Язык прогроммирования C++" некого Б.Страуструпа (шестая глава, упражнение 15, уровень сложности 1.5).
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 22:27
Оценка: :)
korzhik wrote:

> Но вот целиком программа не корректна, так как нельзя ставить точку с

> запятой, после тела функции. Но это скорее всего опечятка.

Вот это, как и ожидалось, без вопросов компилируется g++. Правда, никак
не могй найти внятного комментария по этому поводу в стандарте или
еще где. То ли попустительство компилятора, то ли общая грамматика
такая. Скорее последнее.

#include <iostream>
int main() { return 1 };;;;
Posted via RSDN NNTP Server 2.0
Re[9]: издевательства над switch-ем на собеседовани
От: anvaka Украина Yasiv
Дата: 05.12.05 02:04
Оценка:
Стоит полагать, UB тут:

RO>>
RO>x ^= y ^= x ^= y;
RO>


Почему?
— Стандарт, точки следования, С++...

Этот вопрос много раз тут появлялся.
Ищите на форуме по словам undefined behavior sequence point.
Re: издевательства над switch-ем на собеседовани
От: anvaka Украина Yasiv
Дата: 05.12.05 02:13
Оценка: +1
Здравствуйте, kittown!

K> /*...*/ пример кода для запугивания

K> претендентов на собеседовании /*...*/

А как называется Ваша фирма, если не секрет?
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 06:17
Оценка:
anvaka wrote:
>
> K> /*...*/ пример кода для запугивания
> K> претендентов на собеседовании /*...*/
>
> А как называется Ваша фирма, если не секрет?

Это обучающий центр с возможностью неоднократного
прохождения собеседований, при этом собеседования
проходят потоком. Человек 10-20 сидят с тестами и
отвечают, потом показывают чего наотвечали и
спрашиваются дополнительно.

Нам по барабану, где кто завалятся. Нам важно,
что они реально знают, чтобы уровень подготовки
в группах был схожий.

Обычно, правда, вообще ничего не знают.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[9]: издевательства над switch-ем на собеседовани
От: Вадим Никулин Россия Здесь
Дата: 05.12.05 06:59
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

RO>У кого-то из нас глюки. ГДЕ UB? Приведите, пожалуйста, 2 или больше противоречащих варианта вычисления (по шагам).


UB в том, что между изменениями, например, переменной y нет точек следования.
Re[3]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 05.12.05 07:04
Оценка: 3 (1)
Здравствуйте, kittown, Вы писали:

K>korzhik wrote:


>> Но вот целиком программа не корректна, так как нельзя ставить точку с

>> запятой, после тела функции. Но это скорее всего опечятка.

K>Вот это, как и ожидалось, без вопросов компилируется g++. Правда, никак

K>не могй найти внятного комментария по этому поводу в стандарте или
K>еще где. То ли попустительство компилятора, то ли общая грамматика
K>такая. Скорее последнее.

K>
K>#include <iostream>
K>int main() { return 1 };;;;
K>


Андрей Тарасевич здесь
Автор: Андрей Тарасевич
Дата: 12.08.03
:

Если это тело инлайновой функции, определнной внутри определения класса, то точку с запятой можно поставить, а можно и не ставить. Это сказано в фрагменте грамматики в пункте 9.2.

Если же это определение функции, располагающееся за пределами определения класса, то ставить точку с запятой после такого определения явно запрещено стандартом языка. Для этого надо внимательно рассмотреть фрагмент грамматики в пункте 7/1 и обязательно прочитать пункт 7/3.

Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 07:37
Оценка:
korzhik wrote:
>
> Андрей Тарасевич здесь <http://rsdn.ru/Forum/?mid=350893&gt;:
Автор: Андрей Тарасевич
Дата: 12.08.03

> Если это тело инлайновой функции, определнной внутри определения класса,
> то точку с запятой можно поставить, а можно и не ставить. Это сказано в
> фрагменте грамматики в пункте 9.2.
>
> Если же это определение функции, располагающееся за пределами
> определения класса, то ставить точку с запятой после такого определения
> явно запрещено стандартом языка. Для этого надо внимательно рассмотреть
> фрагмент грамматики в пункте 7/1 и обязательно прочитать пункт 7/3.

Ясно. Значит, просто парсер у g++ так устроен.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[5]: издевательства над switch-ем на собеседовани
От: Шура Ренийский Украина  
Дата: 05.12.05 07:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Итого задача свелась к обмену 2 значений без промежуточной переменной.

можно типа такого
    a += b;

    b = a - b;

    a = a - b;
Re[6]: издевательства над switch-ем на собеседовани
От: ekamaloff Великобритания  
Дата: 05.12.05 07:57
Оценка: 1 (1)
Здравствуйте, Шура Ренийский, Вы писали:

ШР>можно типа такого

ШР>
ШР>    a += b;

ШР>    b = a - b;

ШР>    a = a - b;
ШР>


Однако может привести к переполнению.

ЗЫ: задавали этот вопрос на одном из собеседований... За минуту допер (ответа ессно не знал).
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re: издевательства над switch-ем на собеседовани
От: Lorenzo_LAMAS  
Дата: 05.12.05 07:57
Оценка: +1
Если уж вам действительно хотелось интересного примера со свитчем для самоутверждения и опускания неких студентов (предположительно тех, кто толком не знает про свитч), использовали бы Duff's device.
Of course, the code must be complete enough to compile and link.
Re: издевательства над switch-ем на собеседовани
От: igna Россия  
Дата: 05.12.05 09:25
Оценка: 15 (1) :)
Здравствуйте, kittown, Вы писали:

K>Если скомпилируется, то почему?


Каков был бы ваш ответ на этот вопрос?
Re: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 05.12.05 09:27
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

K>Уже жду следующей команды студентов, желающих пособеседоваться.


K>Mikhail


ИМХО — от программиста требуется умение писать максимально прозрачный, ясный и самодокументируемый код — а не умение изголяться над психикой и интеллектом читающих его код.
Re[3]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 05.12.05 09:33
Оценка:
Здравствуйте, kittown, Вы писали:

K>anvaka wrote:

>>
>> K> /*...*/ пример кода для запугивания
>> K> претендентов на собеседовании /*...*/
>>
>> А как называется Ваша фирма, если не секрет?

K>Это обучающий центр с возможностью неоднократного


Ключевое слово — "обучающий" )
Циркачи одним словом...
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:37
Оценка:
Lorenzo_LAMAS wrote:
>
> Если уж вам действительно хотелось интересного примера со свитчем для
> самоутверждения и опускания неких студентов (предположительно тех, кто
> толком не знает про свитч), использовали бы Duff's device.

Самоутверждаться незачем, а опускать — некуда. После просмотра теста
и так все "веселые" — они же до начала разговора его час-полтора
решают.

А Duff's девайс добавим. В качестве иллюстрации, что case N и default
есть не более, чем метки. И уже на следующем собеседовании у кандадата
шансов будет куда больше.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:38
Оценка:
igna wrote:
>
> Здравствуйте, kittown, Вы писали:
>
> K>Если скомпилируется, то почему?
>
> Каков был бы ваш ответ на этот вопрос?

Некоторое время назад — "не знаю". От
не знающих такой и ожидается, не проблема.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:42
Оценка:
Аноним wrote:
>
> ИМХО — от программиста требуется умение писать максимально прозрачный,
> ясный и самодокументируемый код — а не умение изголяться над психикой и
> интеллектом читающих его код.

Писать, в 99% случаев — да. А читать нужно практически любой.

Кроме того, для разбора любых выкрутасов с Duff's device и примеров
подобных моему достаточно понимания, что case X и default — это
такие особенные метки, разрешенные только внутри switch-а. Если
бы этому так сразу учили, вопросов было бы меньше.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: srggal Украина  
Дата: 05.12.05 09:44
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>ИМХО — от программиста требуется умение писать максимально прозрачный, ясный и самодокументируемый код — а не умение изголяться над психикой и интеллектом читающих его код.


Это они будут по методики обучения американских командос, почерпнутой из боевиков, их учить...

Типа сатрите какие вы тупые и никчемные, а я великий — вас учить буду

Так сказать, чтобы обучаемые прониклись мощью сэнсэя

ЗЫ
Это на правах шутки, но как грится — сказка ложь, да в ней намеу ...
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:49
Оценка:
Аноним wrote:
>
>> > K> /*...*/ пример кода для запугивания
>> > K> претендентов на собеседовании /*...*/
>> >
>> > А как называется Ваша фирма, если не секрет?
>
> K>Это обучающий центр с возможностью неоднократного
>
> Ключевое слово — "обучающий" )
> Циркачи одним словом...

Именно. Общая программа:

0) Введение в C++ с описанием базовых концепций и не только
1) C++ — язык, на котором можно написать чер-те-что.
см. #define private public
2) Некоторые так и делают и вот так можно прочесть их творчество.
2.5) Вот вам пример убитого кода, тем не менее хорошо
показывающий отдельные тонкости языка. Писать так не
надо, но понимание улучшает.
3) А вот надо делать нормальным людям.
4) Вот такие типичные ошибки. Да, именно их все вы только
что и сделали. Сами. А вот так надо их исправлять.
5) А теперь идите и делайте задачу на защиту с презентацией,
а мы вас будем консультировать, если надо.

Основное время на пункты 0,3,4,5.

Mikhail
Posted via RSDN NNTP Server 2.0
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.