Comments 183
Если правильный ответ не 100, пожалуй, я не буду заниматься программированием :)
0
пока не закончится диапазон числа int
-9
110
-2
UFO just landed and posted this here
Не знаю с++, но может быть 91?
+2
Мне тоже сначала показалось что 91, хотя сюда по ответам, таки 101.
0
Обоснование:
Сначала вычисляется логическое выражение в скобках, т. е. во время первой итерации i=9, пока i не равно нулю, пройдёт 9 итераций по 10 выводов «Hello world» прибавляем первый вывод, получаем 91.
Сначала вычисляется логическое выражение в скобках, т. е. во время первой итерации i=9, пока i не равно нулю, пройдёт 9 итераций по 10 выводов «Hello world» прибавляем первый вывод, получаем 91.
-2
101 далматинец?
+1
Обоснование: 1 строка при запуске + 10x10 строк в циклах («while (0)» не запустится ;) )
+3
к сожалению не правильный ответ. Но, поверьте, это самое распространенное рассуждение ;)
0
int main(int argc, char* argv[])
{
int i = 10,k=0;
std::cout<<"Hello World!"<<++k<<std::endl;
// Сколько раз???
while(i--)
{
// Сколько раз будет вызвана эта строка???/
for(int j=0; j<10; j++)
std::cout<<"Hello World!"<<++k<<std::endl;
}
return 0;
}
первая строка «Hello World!1», последняя «Hello World!101». В чем прикол?
+2
я уверен, что не у всех так :)
+1
101 — 1 = 100 (?) :)
0
Можно поинтересоваться каким компилятором вы пользовались при проверке?
0
кстати, префиксная и постфиксная декриментация — разные вещи ;) мб ваш компилятор считает i-- префиксным, и тогда выходит 91
-3
Это i-- префиксный? Какой тогда --i? :)
+1
мб = может быть. Разные авторы компиляторов, разные стандарты, разные ошибки, в конце концов.
P.S.:
i = 10; x = --i // i = 9; x = 9 постфиксное декриментирование
i = 10; x = i-- // i = 9; x = 10 постфиксное декриментирование
P.S.:
i = 10; x = --i // i = 9; x = 9 постфиксное декриментирование
i = 10; x = i-- // i = 9; x = 10 постфиксное декриментирование
0
твою налево — первый префиксный (вот и у меня косяк случился — почему у компиляторов не может их быть, их же люди делали)
+1
Первое префиксное. Сначала декремент, потом вычисление.
* уменьшаем i
* присваиваем x = результат
Второе постфиксное:
*присваеваем x = результат (который ещё 10)
*уменьшаем i
* уменьшаем i
* присваиваем x = результат
Второе постфиксное:
*присваеваем x = результат (который ещё 10)
*уменьшаем i
+2
>Второе постфиксное:
>*присваеваем x = результат (который ещё 10)
>*уменьшаем i
Это не так. Порядок операций декремента и присваивавния будет как в первом случае, вот только результат будет другим. Т. е.
• уменьшаем i
• присваеваем x = результат (который ещё 10)
Вопрос на засыпку: всегда ли можно заменить вызов функции «statement(i++);» на «statement(i); ++i;»?
>*присваеваем x = результат (который ещё 10)
>*уменьшаем i
Это не так. Порядок операций декремента и присваивавния будет как в первом случае, вот только результат будет другим. Т. е.
• уменьшаем i
• присваеваем x = результат (который ещё 10)
Вопрос на засыпку: всегда ли можно заменить вызов функции «statement(i++);» на «statement(i); ++i;»?
-1
Ламерам, ставящим минус, предлагается для начала Саттера хоть почитать, что ли.
А ещё лучше написать свой тестовый класс-обёртку над int. Определить оператор присваивания и постинкремент с обычной семантикой, которые печатают лог в консоль. И выяснить, что присваивание раньше инкремента вызвано никак не будет.
Это здесь вы мне сейчас минус ставите, вместо того, чтобы разобраться с вопросом. А попадёте мне на собеседование — я вам минусы буду ставить.
А ещё лучше написать свой тестовый класс-обёртку над int. Определить оператор присваивания и постинкремент с обычной семантикой, которые печатают лог в консоль. И выяснить, что присваивание раньше инкремента вызвано никак не будет.
Это здесь вы мне сейчас минус ставите, вместо того, чтобы разобраться с вопросом. А попадёте мне на собеседование — я вам минусы буду ставить.
-1
По всей видимости 101;)
0
101
0
101
0
Если не трудно, обоснуйте свой ответ комментарием к своему ответу (сумбурно как то, но думаю вы поняли ;)
0
А зацикливания не будет?
while(i--) когда нибудь вернет false?
while(i--) когда нибудь вернет false?
-2
Вот чую я что:
for(int j=0; j<10; j++)
даст не 10, а 11 итераций почему-то.-4
91 вроде
0
ну тут while(i--) будет выполняться пока i истинно и будет 9 циклов. Хотя тут сомнения может даже и 81 раз покажет.
0
#include int main(int argc, char* argv[])
{
int i = 10, k = 0;
//std::cout<<"Hello World!"<<std::endl;
k++;
// Сколько раз???
while(i--)
{
// Сколько раз будет вызвана эта строка???/
for(int j=0; j<10; j++)
//std::cout<<"Hello World!"<<std::endl;
k++;
}
std::cout << k << std::endl;
return 0;
}
Выводит на экран 101. В общем-то, как и ожидалось :).
0
Если честно — то это уже тест реализации компиляторов с plus plus — раз начали такую простую задачу исполнять компиляторами.
А вот автора приведшего такой код я завалил бы на собеседовании — так как постинкремент/декремент себя ведет это понятно, а что считается ИСТИНОЙ или ЛОЖЬЮ — это уже гораздо большой вопрос к его разработчикам.
А вот автора приведшего такой код я завалил бы на собеседовании — так как постинкремент/декремент себя ведет это понятно, а что считается ИСТИНОЙ или ЛОЖЬЮ — это уже гораздо большой вопрос к его разработчикам.
-8
Не совсем понял про «что считается ИСТИНОЙ или ЛОЖЬЮ». Если можно на примере представленного кода.
0
…
while(i--)
…
while(i--)
…
0
Что в данном случае не так?
0
то что многим и мне в том числе не нравиться в с++ — приравнивание 0(нуль) к false (ложь)
0
Согласен, в том же c# нужно использовать именно оператор сравнения, а такая коснтрукция просто не пройдет…
PS А по-поводу «завалил бы на собеседовании» не совсем ясно ;)
PS А по-поводу «завалил бы на собеседовании» не совсем ясно ;)
+2
Ну прет некоторых. «Вот я бы у себя на кафедре тебе 4 не поставил». Или «вот при приеме на работу, я бы тебя завалили интеллектом, просто потому что настроение плохое» Этакое невзначайное показательное проявление власти и интеллекта в одном невзрачном предложении, не обращайте внимания) Задачка клевая, еще на втором курсе препод на нее ловил, лучшие умы матерились и плевались )
+7
Ну конечно же такая конструкция пройдёт, надо только написать ее немного более явно:
while (Convert.ToBoolean(i--))
{
…
}
while (Convert.ToBoolean(i--))
{
…
}
0
А вот в контору, где человек, проводящий собеседование, не знает что в цпп считается истиной, а что ложью, я бы не пошёл. Открою вам страшную цпп-шную тайну — от компилятора это не зависит.
+3
Идея заключается в том, что в ряде систем (не в Си ПП) действительно приняты другие значения int для истины и ложи. Банальный пример — MS Access, где истина — это 0, а ложь — -1.
0
Если я устраиваюсь на должность плюсового программиста, то мне дела нет до того безумства, которое придумали разработчики акцесса. Аффтар комментария написал, что он бы завалил претендента на этом и что это якобы зависит от разработчкиков компилятора конкретно цпп. Вот я и говорю, в контору, где такие профаны проводят технические собеседования идти явно не стОит. :)
+3
Простите, а мне нет безумства до того дела, как в том или инном компиляторе, или фреймворке реализуеться булевские типы. Я программирую и под Windows и под Mac OS X, так коды ошибок и их формирование различаеться рказительно. Я бы предпочел писать человеческий while или for, вместо того, безобразия, что написано в примере.
0
Нежелание учиться и читать документацию не говорит о вас ничего хорошего как о специалисте. Это не особенность компилятора или платформы. Это спецификация языка. Инвариант во всех возможных реализациях.
Что касается «человеческого»… Меня удивляют люди, способные написать пол-страницы бессмысленного текста только потому, что не осилили учебник дальше второй страницы. _Это_ в си и сипипи — идиоматическое выражение. Выросло поколение программистов, которые этого не знают? Вот если бы я проводил собеседования по кандидатам на сипипи, то точно завалил бы человека, не знающего и не понимающего этого. А! «Пхп-программисты»? :)
Что касается «человеческого»… Меня удивляют люди, способные написать пол-страницы бессмысленного текста только потому, что не осилили учебник дальше второй страницы. _Это_ в си и сипипи — идиоматическое выражение. Выросло поколение программистов, которые этого не знают? Вот если бы я проводил собеседования по кандидатам на сипипи, то точно завалил бы человека, не знающего и не понимающего этого. А! «Пхп-программисты»? :)
0
Про нежелание учиться вы взяли с потолка, я говорю, что я не обязан знать, что к примеру E_FILE_NOT_FOUND — 0x80041003. Такие элементарные вещи я знаю, а про триграф прочел два года назад у Саттера, однако дело не в этом. Если бы я проводил собеседование по С++, я бы точно не стал валить человека из-за такой чуши, потому что я не самоутверждаюсь, когда задаю вопросы. Цель — узнать уровень человека, его натуру, природу, область знаний, присутствие аналитического мышления, а всякие элементарные вещички — забываються в процессе их не использования. Их мозг попросту вычеркивает, когда каждый день вы пихаете в голову огромное количество материала, который необходимо освоить по работе. А о тех, кто пытается завалить человека на таком элементарном действии я могу подумать только одно «Видимо более толкого ничего спросить не может». Лично я предпочитаю услышать на собеседовании вопрос «Какие методы перехвата API функций вы знаете», чем «Отстортируйте пожалуйста массив методом вставки»…
0
В Obj C например вообще нет булевского типа, его реализует самостоятельно, тем не менее Obj C — это надмножество над языком С (хотя в нем булевского типа тоже нет...). Человек, который является не только узкоспециализированным специалистом (я считаю, что человек всегда обязан постигать что-то новое, иначе он остановиться в развитии и начнет деградировать), всегда может забыть что-то элементарное или спутать его с чем-то. А код, подобный тому, что дан в примере, я всегда рефакторю, когда вижу…
0
Ну и последнее, что я хотел сказать. Да, каюсь, я не помню такие вещи из стандарта языка, как частичная инстанциация шаблонов, и вообще многое о шаблонах, и не помню многое из книги Александреску, просто потому, что я НЕ ИСПОЛЬЗОВАЛ это уже как два года. Однако два года назад все эти вещи отскакивали у меня от языка, и по знаниям плюсов, и всяких заковыристых штучек я мог бы дать фору любому Сеньйору. Однако это вовсе не говорит о том, что раньше я был лучшим программистом, скорее наоборот.
Вот потому всякие штуки касательно языка, особенности, мелочи, и прочие Exceptional вещи стоит спрашивать у джуниоров, просто потому, что более у них нечего спросить, опыта у них нет, и оценить их как специалистов — очень сложно. Человек, которые поработал в отрасли професионально, просто не допускает вещей, который могут приводить ко всяким Undefined Behaviour и прочим прелестям, просто потому, что эта привычка выработалась на интуитивном уровне. Из своего богатого опыта багфиксинга в С++ проектах, могу сказать, что баги из-за элементарных ошибок — это ну 10%, и их очень легко обнаружить, или пофиксить во время рефакторинга или Code Review. А вот кривое проектирование, или обильное использование тех же шаблонов — это действительно Pain In the ass, и отлаживать это очень сложно.
Есть конечно же фанбои языка, которые в 40 лет способны помнить такие вещички, что сам Саттер позавидует, но я видимо не из таких, и меня больше интересуют прикладные направления.
Вот потому всякие штуки касательно языка, особенности, мелочи, и прочие Exceptional вещи стоит спрашивать у джуниоров, просто потому, что более у них нечего спросить, опыта у них нет, и оценить их как специалистов — очень сложно. Человек, которые поработал в отрасли професионально, просто не допускает вещей, который могут приводить ко всяким Undefined Behaviour и прочим прелестям, просто потому, что эта привычка выработалась на интуитивном уровне. Из своего богатого опыта багфиксинга в С++ проектах, могу сказать, что баги из-за элементарных ошибок — это ну 10%, и их очень легко обнаружить, или пофиксить во время рефакторинга или Code Review. А вот кривое проектирование, или обильное использование тех же шаблонов — это действительно Pain In the ass, и отлаживать это очень сложно.
Есть конечно же фанбои языка, которые в 40 лет способны помнить такие вещички, что сам Саттер позавидует, но я видимо не из таких, и меня больше интересуют прикладные направления.
0
Мне кажется, спор изначально шел об актуальности писать
…
while (i--)
…
а не
…
while (i-- != 0)
…
Так вот это человек должен знать и через 2, и через 5 лет. Это азы, основа, идея языка. Именно это обеспечивает легкость кода, которая в С максимальна и прекрасна.
А по поводу триграфов и соотношения умения к знанию мелочей Вы, безусловно, правы.
…
while (i--)
…
а не
…
while (i-- != 0)
…
Так вот это человек должен знать и через 2, и через 5 лет. Это азы, основа, идея языка. Именно это обеспечивает легкость кода, которая в С максимальна и прекрасна.
А по поводу триграфов и соотношения умения к знанию мелочей Вы, безусловно, правы.
+1
>А код, подобный тому, что дан в примере, я всегда рефакторю, когда вижу…
Интересно, на что?
На
while ( i != 0) {
i = i — 1; // а вдруг вы позабудете как работает оператор декремента
…
?
Вы взаправду считаете, что этот проще для понимания? А вдруг вы позабудете что делает операция "!="? Ведь всегда можно забыть что-то элементарное, ага? А вдруг вы позабудите, как работает оператор while? Тогда как?
start_of_loop_345:
if ( i
Интересно, на что?
На
while ( i != 0) {
i = i — 1; // а вдруг вы позабудете как работает оператор декремента
…
?
Вы взаправду считаете, что этот проще для понимания? А вдруг вы позабудете что делает операция "!="? Ведь всегда можно забыть что-то элементарное, ага? А вдруг вы позабудите, как работает оператор while? Тогда как?
start_of_loop_345:
if ( i
+1
Я предпочитаю для быстроты понимания for, так как он четко отображает границы цикла, и при применении префиксного декримента (--i) по скорости работы не уступает while. Ну а чтобы позабыть как работают операторы — это не знаю, нужно лет 10 не программировать, так как по-сути операторы одни и те же во всех языках, но различаются семантикой.
-1
Сожрался кусок…
start_of_loop_345:
if ( i <= 0 ) {
goto end_of_loop_345;
}
i = i-1;
…
goto start_of_loop_345;
end_of_loop_345:
:) Тоже прикольно, только зачем тогда вообще изучать языки высокого уровня?
start_of_loop_345:
if ( i <= 0 ) {
goto end_of_loop_345;
}
i = i-1;
…
goto start_of_loop_345;
end_of_loop_345:
:) Тоже прикольно, только зачем тогда вообще изучать языки высокого уровня?
+1
>я не обязан знать, что к примеру E_FILE_NOT_FOUND — 0x80041003
Угу. На то они и константы, чтобы не запоминать их численное значение. Но речь совсем не об этом.
>а про триграф
А речь не про триграфы. Это забавный анахронизм. В номальных компиляторах по умолчанию уже отключён.
>Лично я предпочитаю услышать на собеседовании вопрос «Какие методы перехвата API функций вы знаете»
По-моему, как раз этот вопрос ни чем не отличается от вопроса, — «каково численное значение константы E_FILE_NOT_FOUND». Тупая зубрёжка апи. Где здесь натура человека, природа, область знаний, аналитическое мышление? Где?
>чем «Отстортируйте пожалуйста массив методом вставки»
Ну, вот этот вопрос, конечно, слишком простой, но он, хотя бы, чуть-чуть про аналитическое мышление :). Немного интереснее вопрос, — «напишите бинарный поиск», — почти все далают ошибки.
Угу. На то они и константы, чтобы не запоминать их численное значение. Но речь совсем не об этом.
>а про триграф
А речь не про триграфы. Это забавный анахронизм. В номальных компиляторах по умолчанию уже отключён.
>Лично я предпочитаю услышать на собеседовании вопрос «Какие методы перехвата API функций вы знаете»
По-моему, как раз этот вопрос ни чем не отличается от вопроса, — «каково численное значение константы E_FILE_NOT_FOUND». Тупая зубрёжка апи. Где здесь натура человека, природа, область знаний, аналитическое мышление? Где?
>чем «Отстортируйте пожалуйста массив методом вставки»
Ну, вот этот вопрос, конечно, слишком простой, но он, хотя бы, чуть-чуть про аналитическое мышление :). Немного интереснее вопрос, — «напишите бинарный поиск», — почти все далают ошибки.
+1
> Тупая зубрёжка апи. Где здесь натура человека, природа, область знаний, аналитическое мышление? Где?
Я c вами не согласен. Этот вопрос отображает опыт человека, хоть как-то, а подобные задачки типа сортировки или поиска делением пополам все когда-то решали будучи в институте, т. е. если это нужно будет, и если человек этого не знает, то алгоритм гуглиться в течении 5 минут, и применяется к конкретной ситуации. Конечно, кто-то может возразить, что это не правильно, но я считаю, что лучше уметь правильно применить существующий алгоритм, чем по памяти сделать неправильно :)
Я c вами не согласен. Этот вопрос отображает опыт человека, хоть как-то, а подобные задачки типа сортировки или поиска делением пополам все когда-то решали будучи в институте, т. е. если это нужно будет, и если человек этого не знает, то алгоритм гуглиться в течении 5 минут, и применяется к конкретной ситуации. Конечно, кто-то может возразить, что это не правильно, но я считаю, что лучше уметь правильно применить существующий алгоритм, чем по памяти сделать неправильно :)
0
Так ведь и методы перехвата гуглятся на раз. Тут речь о другом — поскольку почти все далают ошибку в поиске пополам, это повод узнать как человек будет искать и исправлять ошибку. Либо как доказывать что его алгоритм реализован правильно. Вот вам и природа, натура и мышление. А какую информацию о человеке вы получите от перечисления тупо заученых методов? Что человек их тупо заучил?
+1
Как о человеке — да никакую, но я я говорил о другом, что сам предпочитаю получать такие вопросы на собеседовании ;) О психологии человека точнее может сказать HR, а я как человек воспринимаю другого человека по моторике, невербальном общении и характеристикам его речи.
К слову сказать, почему-то все компании взяли за правило при приеме на работу, давать распечатаные тесты с БреинБенча advanced level, и потом проводить техническое собеседование по конкретным прикладным направлениям…
Если речь зашла о бинарном поиске, какую же ошибку все допускают в сравнительно простом алгоритма, если не секрет?
К слову сказать, почему-то все компании взяли за правило при приеме на работу, давать распечатаные тесты с БреинБенча advanced level, и потом проводить техническое собеседование по конкретным прикладным направлениям…
Если речь зашла о бинарном поиске, какую же ошибку все допускают в сравнительно простом алгоритма, если не секрет?
0
Попробуйте написать бинарный поиск, узнаете какую ошибку делют :). Лучше на бумажке сначала, а потом прогоните юнит-тесты. С пересчётом границ, разумеется, ошибки. Что ведёт либо к зацикливанию, либо к пропуску значений — смотря в какую сторону ошиблись. Утверждают, что реализация двоичного поиска не содержащая ошибок исторически появилась лет через пять — десять, после публикации алгоритма :). Сам по себе факт ошибки в этом алгоритме, конечно, большой полезной информации не несёт, интересна, как я уже написал, реакция.
На самом деле, мне ближе всего однажды описаный здесь на хабре подход к техническим собеседованиям — всё что нужно понять — может ли человек программировать или нет. В концептуальном смысле. А на этот вопрос, как раз несложные алгоритмические задачки позволяют получить ответ. Если да, то всякие там тонкости апи конкретных платформ — это дело десяток и двадцатое, — зачем это учить, если это всё есть в справочнике и в гугле. Это для начинающих. А для «продолжающих»,… ну, не знаю, опыт описан в резюме. Пять лет назад (два года, год, даже пол-года назад) я работал с иными вещами, нежели сейчас. Спросить меня про апи и библиотеки тех времён разработки — ничего на отвечу.
На самом деле, мне ближе всего однажды описаный здесь на хабре подход к техническим собеседованиям — всё что нужно понять — может ли человек программировать или нет. В концептуальном смысле. А на этот вопрос, как раз несложные алгоритмические задачки позволяют получить ответ. Если да, то всякие там тонкости апи конкретных платформ — это дело десяток и двадцатое, — зачем это учить, если это всё есть в справочнике и в гугле. Это для начинающих. А для «продолжающих»,… ну, не знаю, опыт описан в резюме. Пять лет назад (два года, год, даже пол-года назад) я работал с иными вещами, нежели сейчас. Спросить меня про апи и библиотеки тех времён разработки — ничего на отвечу.
0
111
0
Запустил в 2008 студии, прифигел.
Расскажите в чём прикол, или я что-то не заметил? %)
Расскажите в чём прикол, или я что-то не заметил? %)
+2
А что выдала 2008 студия, если не секрет? :)
0
секрет ))) надо уповать на собственный мозг
0
Секрет :)
А вот в гсс, всё нормально работает, как и должно быть — 101.
А вот в гсс, всё нормально работает, как и должно быть — 101.
0
Совершенно верно, nailll.habrahabr.ru/blog/41584/#comment_1016748
Ответ опубликую чуть позже…
Ответ опубликую чуть позже…
0
Что за задача такая, если решение зависит от компилятора?
0
101
люблю c++, а в особенности озадачивать подобными алгоритмами преподов =)
люблю c++, а в особенности озадачивать подобными алгоритмами преподов =)
-5
UFO just landed and posted this here
Данный код как оказалось, ведет себя иначе (читай нормально) при компилировании с GCC
+1
за меня думает интерпретатор/компилятор
0
gcc-4.2.4 (linux) — 101
mingw gcc port (windows) — 101
msvc 2005 — 11
mingw gcc port (windows) — 101
msvc 2005 — 11
0
Хотя если не просто перенести код из примера, а переписать ручками 1 в 1 и в msvc получилось 101.
Смутило вот это при компиляции «Warning 1 warning C4010: single-line comment contains line-continuation character c:\Documents and Settings\Koric\Мои документы\Visual Studio 2005\Projects\Test\Test\main.cpp 12
»
Смутило вот это при компиляции «Warning 1 warning C4010: single-line comment contains line-continuation character c:\Documents and Settings\Koric\Мои документы\Visual Studio 2005\Projects\Test\Test\main.cpp 12
»
+3
ну это собственно оно и есть…
0
тогда могу предположить, что причина в комментарии
" // Сколько раз будет вызвана эта строка???/",
в конце которого содержится символ перевода строки.
Таким образом строчка с for тоже будет куском строчного (!) комментария => цикл for выполняться не будет => 1 вывод + 10 итераций while
А препроцессор gcc вырезает все комментарии до компиляции
" // Сколько раз будет вызвана эта строка???/",
в конце которого содержится символ перевода строки.
Таким образом строчка с for тоже будет куском строчного (!) комментария => цикл for выполняться не будет => 1 вывод + 10 итераций while
А препроцессор gcc вырезает все комментарии до компиляции
+5
Совершенно верно, именно и дело в комментарии, так как там используется триграф ??/
0
Вот кстати это очень интересно — вырезает ли компилятор комментарии до компиляции или он просто игнорирует триграфы?
0
кстати не вырезает gcc комментарии… он явно предупреждает пользователя что мол, используются триграфы и я их отключил…
g++ app.cpp
app.cpp:26:73: warning: trigraph ??/ ignored, use -trigraphs to enable
g++ app.cpp
app.cpp:26:73: warning: trigraph ??/ ignored, use -trigraphs to enable
+1
При явном указании стандарта -std=c++98 таки меняет ??/ на \, и даёт соответственно 2 ворнинга
some.cc:11:78: warning: trigraph ??/ converted to \
some.cc:11:7: warning: multi-line comment
some.cc:11:78: warning: trigraph ??/ converted to \
some.cc:11:7: warning: multi-line comment
0
Вот это поворот событий, такого меньше всего ожидал. Это выдуманная ситуация или реально такой баг попался?
+3
Такого, слава богу, не попадалось… Тем не менее, ситуация вполне может произойти, например, в качестве злой шутки…
0
а вот это реальный баг из той же серии
insomniacgames.com/tech/articles/0807/ahairtearingoutbug.php
insomniacgames.com/tech/articles/0807/ahairtearingoutbug.php
0
Не понял в чем фишка.
-4
А, понял. А разве там можно их оставлять?
-5
Майкрософт отличилиcь :)
-8
msvc 2008 — 11
Ну раз уж ответы пошли.
Ну раз уж ответы пошли.
+1
В пятницу, да вечером… Жестокий человек…
+4
102
-1
Я правильно понял, что весь прикол вот здесь?
"// Сколько раз будет вызвана эта строка???/"
В последнем слеше?
11 раз получилось со слешем и 101 без :)
"// Сколько раз будет вызвана эта строка???/"
В последнем слеше?
11 раз получилось со слешем и 101 без :)
+1
msdn.microsoft.com/en-us/library/56ybs0yk(VS.80).aspx
0
именно так (пост обновил, ответ там)
0
Ну и да, ответ будет разным в зависимости от компилятора (101 либо 21)
откуда 21? должно же быть 11 вроде
+2
во первый почему 21?
101 (1 + 10*10) и 11 (1 + 10)
101 (1 + 10*10) и 11 (1 + 10)
0
В режиме соответствия стандарту GCC включает поддержку триграфов.
+2
UFO just landed and posted this here
А я веб-разработчик, коих многие считают «недопрограммистами», но, судя по комментариям, кхе-кхе… даже не знаю что сказать )
+2
))) «вот такое вот хреновое лето»
+1, — базис кодера, диплом кодера, а сам админ.
+1, — базис кодера, диплом кодера, а сам админ.
+1
я вот тоже читаю комментарии и удивляюсь. Здесь программистких навыков-то и не нужно, обычная логика, будь-то си++ или псевдокод.
0
Вот если честно, 111 может получиться только из-за невнимательности, как у меня :) Я посчитал, 101. триграф кстати заметил, о них читал в свое время у Саттера. А потом сам себе злой буратино думаю «Постойте, но что будет на последней итерации, когда будет 1? Правильно, он сначала пройдет в цикл, а потом сделает декремент!» и вот тут-то логика дала сбой. В общем с подколом задачка.
0
И при этом VS не раскрашивает код соответственно поддерживаемой функции?
Надо будет преподавателю, который Си предпочитает, показать, вдруг не знает, интересно как он выглядит в заблуждении=)
Спасибо за интересный миниурок.
Надо будет преподавателю, который Си предпочитает, показать, вдруг не знает, интересно как он выглядит в заблуждении=)
Спасибо за интересный миниурок.
0
Хорошая задачка. По сути наглядно, на пальцах показавшая, как можно глупыми вкраплениями изуродовать мощный промышленный язык, сделав его неподконтрольным даже для сильных разработчиков. Грустно. Да.
+8
В Паскале эта проблема решена аккуратнее. Вместо квадратных скобок, к примеру, можно писать "(." и ".)", но это распознается на уровне токенов, а не заменяется где попало.
+1
Про триграфы знал из «Дизайн и эволюция C++»,
Отвечу на вопрос:
// Сколько раз будет вызвана эта строка???/
Ответ — нисколько, строчка с комментариями игнорируется программой, а вот следующая строчка…
Отвечу на вопрос:
// Сколько раз будет вызвана эта строка???/
Ответ — нисколько, строчка с комментариями игнорируется программой, а вот следующая строчка…
+2
сидел и вмыкал всё утро, как народ 101 получает, или 11, ппц какой-то
0
$ g++ 1.cpp
1.cpp:11:47: warning: trigraph ??/ ignored, use -trigraphs to enable
1.cpp:11:47: warning: trigraph ??/ ignored, use -trigraphs to enable
0
Автору спасибо (в карму) за триграфы. Добавлю пожалуй в избранное.
+1
101 конечно. 2 цикла по 10 и 1 раз в начале. посчитал моском.
удивлен до крайности что столько комментов…
удивлен до крайности что столько комментов…
-4
>А вот Visual c++ с вами не согласен)
то это проблема мс-кого компилятора.
10 на 10, и плюс 1. всегда буит 101 )
то это проблема мс-кого компилятора.
10 на 10, и плюс 1. всегда буит 101 )
0
Фиг с ними с триграфами, но чтобы столько сразу людей на хабре (!) не знало самых основ языка C…
Хочется прям грубо спросить, ребята, что вы тут делаете со своими 100, 91 и прочими бесконечными циклами?
Вы откуда, из 1С?
Стыдно.
Задачку (вариант без триграфов, т. к. у меня java и суть не в этом) запомню на будущее для собеседований. Кто не решит, того можно смело гнать сцаными тряпками и дальше не разговаривать ;)
Хочется прям грубо спросить, ребята, что вы тут делаете со своими 100, 91 и прочими бесконечными циклами?
Вы откуда, из 1С?
Стыдно.
Задачку (вариант без триграфов, т. к. у меня java и суть не в этом) запомню на будущее для собеседований. Кто не решит, того можно смело гнать сцаными тряпками и дальше не разговаривать ;)
0
+2
-3
Не согласен, иногда даже в простой задачке по перестановке символов в строке местами, из-за волнения можно сделать промашку и пустить цикл на лишнюю итерацию. Однако из этого ничего не следует. На собеседовании в мою текущую компанию, я так и ступил, однако меня взяли. И не из-за того, что брать некого было, а из-за того, что по результатам собеседования (на котором были 6(!) человек, не более 4 одновременно), я показал свои знания и то, что подобная хрень со строками — мало играет роли :)
0
Такую задачу на java перенести можно только с корректировкой, Так как while(i--) выдаст ошибку при компиляции — целочисленный тип к логическому привести нельзя
0
UFO just landed and posted this here
Слушайте, вы хабракатом просто так вот зарезали девяносто далматинцев?!
0
Не сколько. Забыли include;)
+2
Еще есть похожая штука — диграфы. Они полезны, если надо сделать код с хитростями подобно вышеприведенному ( например " i = 42<:p:>; " ). В отличие от триграфов, gcc даже предупреждения не выдает. Я погорел однажды на инстанцировании шаблона классом из глобального пространства имен, написав примерно так: Myclass<::poi> q;
0
UFO just landed and posted this here
Sign up to leave a comment.
Задачка "Hello World"