On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 28.07.12 18:42. Заголовок: Баг MS VC++ 2010 в лямбда-выражениях.


Похоже, я обнаружил новый баг в MS VC++ 2010, который на этот раз связан с лямбда-выражениями.
Согласно стандарту С++ 2011 лямбда-выражение, имеющее пустое lambda-capture (Не знаю, как лучше перевести этот термин на русский язык, но это означает, когда конструкция лямбда-выражения записана с пустым списком внутри квадратных скобок [] . Далее на примере будет видно, о чем идет речь), имеет неявный оператор преобразования типа в указатель на функцию с соответсвующими параметрами и возвращаемым значением. Однако в MS VC++ 2010 такая оператор-фукнция у лямбда-выражения отсуствует, и компилятор выдает сообщение об ошибке при попытке такое преобразование выполнить.

Пример, демонстрирующий данный баг.

#include <iostream> 

int main()
{
void ( *f )( int ) = []( int x ) { std::cout << x << " "; };

f( 10 );

return ( 0 );
}


В этом примере лямбда-выражение []( int x ) { std::cout << x << " "; } (обратите внимание на пустые квадратные скобки, о которых я говорил выше) имеет неявный оператор-функцию преобразования в указатель на функцию, тип которого задан в примере слева от знака присваивания. Однако компилятор MS VC++ 2010 при компиляции этого примера выводит сообщение об ошибке

error C2440: инициализация: невозможно преобразовать "`anonymous-namespace'::<lambda0>" в "void (__cdecl *)(int)"
Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен


Если этот пример запустить с помощью онлайнового компилятора, то код успешно компилируется, и, как полагается, выводится на экран число 10.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]





ссылка на сообщение  Отправлено: 28.07.12 18:44. Заголовок: вновь забаненный спе..


вновь забаненный специалист гуглить не умеет?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3043.html
смотрим на дату коммита. этой фичи просто не было в стандарте на момент релиза 2010 студии.

по поводу твоего последнего бана на программерсфоруме (банил не я). тот пост написал определенно нуб, который еще не достиг той зрелости, чтобы читать сообщения компиля, самостоятельно разобраться в проблеме. возможно, вчера он установил иде в первый раз. ЕСТЕСТВЕННО, он некомпетентный дилетант. Нормальные люди (в отличии от тебя) это понимают и либо проходят мимо (зачем тратить свое время впустую), либо дают какие-то базовые советы. Ты же просто опустил его. В детский садик тоже ходишь, поспорить с малышами, почему 2+2 все же 4, а не 5? думаю тебе понравится. или может быть ты считаешь, что на этом форуме сплошь профессиональные программисты (т.н senior programmer)? тогда открою тебе секрет. ИХ ТАМ НЕТ. превалирующее число студентов/новичков, немного junior-ов, еще меньше middle программистов. Для профессионалов есть куда более специфичные (и интересные) ресурсы. Ты же, определенно senior programmer, предпочитаешь тыкать новичков в их собственное дерьмо, якобы объясняя им то, что они еще не в состоянии понять! Что кстати само странно, ибо состоявшиеся программисты такой херней не будут заниматься. они уделяют свободное время семьям, детям, друзьям. я конечно понимаю, что тяжело найти человека, который бы смирился с твоим ЧСВ, но ты все же попытайся. Глядишь, и нубов вокруг поубавится.

удачи.

Спасибо: 0 
Цитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:45. Заголовок: Отвечаю по пунктам. ..


Отвечаю по пунктам.
Первое. если все гуглить, то не хватит одной жизни. Я нашел очевидный баг, а результатом чего он является: то ли результатом ошибки, то ли результатом того, что еще не были сформулированы точные требования к лямбда-выражениям - это уже второй вопрос. Я поделился информацией с другими, что такой баг есть. И это очень здорово, что я так сделал, потому что многие этого не знают. А обсудить причины бага всегда можно. И вам спасибо за то что вы предоставили дополнительную информацию по этой проблеме.
То, что вы далее написали, к С/С++ никакого отношения не имеет, а лишь выражает какие-то ваши личные эмоции, не понятно с чем связанные. И самое забавное, они опровергают ваш же тезис о том, что

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

Или из этого можно сделать вывод, что вы сам - к сожалению не состоявшийся программист, так как занимаетесь, говоря вашими словами, всякой херней. Я не хочу вас обидеть, но просто очевидно, что вы сами себе противоречите, если допустить, что вы - сстоявшийся программист.
Я вас разочарую, но у меня другие представления о нормальных людях. Я не прохожу мимо, если кого-то волнует проблема. Я стараюсь помочь. И мой ответ был вполне нетрайльный. Это надо иметь больное самолюбие, как у модератора того форума. Я просто отоветил автору темы, что нало быть не голословным. Если он считает, что простая программа не компилируется на MS VC++, то пусть покажет эту простую программу. Это очень важно и для других программистов, знать, какой код и почему не компилируется. Поэтому это действительно дилетанство, и не важно начинающий программиист ии нет. это вообще к уровню программиста не имеет никакого отношения. Это имеет отношение лишь к адекватному изложению проблемы. То есть если вы задаете вопрос на форуме, отвлекаете других людей, то постарайтесь изложить вопрос так, чтобы он был понятен другим и предоставлял как можно больше информации. Иначе это просто пустая трата времени.

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

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

Итак. был вопрос..


 цитата:
Можете подсказать компилятор С++ (Последний Visual глючит, как и Builder 2010)
Если сможете-дайте рабочую ссылку ...По-моему, какая-то проблема с cl.exe.
В общем - находит ошибки в самых елементарных программах



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


 цитата:
Пример кода и ошибок можно?



Так добиться примера простого кода, как уверял автор вопроса, не получилось, Я высказал свое мнение:


 цитата:
Может быть надо не компилятор обвинять, а внимательно посмотреть тот код, который вы пишите. У MS VC++ 2010 етественно есть немало багов. Но я не думаю, что вы именно с ними столкнулись, потому что профессионалы не теряются от того, что у компилятора есть баги, и не меняют каждый раз компилятор после того, как у них не скомпилировалась программа. Более того вы можете сообщить Майкрософт, что вы в их компиляторе обнаружили баг. Вы тем самым окажите большую услугу другим програиммистам, которые пользуются этим компилятором.
А пока то, что вы пишите, больше похоже на дилетанство.



После чего меня модератор забанил. На мой взгляд этому модератору явно надо обратиться к психиатру! Так как у него с нервишками не все в порядке.
Правда если принять во внимание то, что пишите вы, то есть то, что профессиональных квалифицированных программистов - ИХ ТАМ НЕТ (ваши слова), то можно сделать вывод, что это такая целенаправленная политика администрации форума, чтобы профессиональных программистов там не было. Но тогда поведение этого модератора вполне объяснимо. Оно в русле этой политики!


Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:46. Заголовок: если допусвтить, чт..



 цитата:

если допусвтить, что вы - сстоявширйся программист.


я нигде не говорил, что я состоявшийся программист. я студент. учусь, работаю. считаю себя начинающим. поэтому и обитаю на этом форуме. отсюда и мое мнение о тебе, как о человеке за 45 лет, который затесался в "детскую" тусовку. возможно даже ты уже на пенсии и тебе просто нечем заняться. это бы многое объяснило.


 цитата:

то можно сделать вывод, что это политика такая аминистрации форума, чтобы профессиональных программистов там не было


профессиональных программистов там нет потому, что форум предназначен больше для новичков. профессиональным программистам там просто делать нечего, нечему научиться. открой для себя wasm.ru, stackoverflow.com.

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

Спасибо: 0 
Цитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:47. Заголовок: pproger пишет: и ве..


pproger пишет:

 цитата:
и везде та же самая ситуация - избиение младенцев



Что-то вы слишком близко к сердцу все принимаете! Нет никакого "избиения младенцев". Я просто указал, что надо серьезнее относитсья к вопросу и, фактически, посоветовал не спешить менять компилятор, а обратить внимание в первую очередь на свой код., так как вполне возможно, что он просто заблуждается. В этом состоял лейтмотив моего ответа.
И потом, на мой взгляд вы совершенно не правы. Форум, а тем более по программированию, - это открытая площадка. Открытая для всех. И откуда смогут получить грамотный ответ новички, если на эти форумы не будут заходить профессиональные программисты?!
Я приведу еще один характерный пример с этого форума, где неадекватный модератор меня забанил. Это очень наглядный пример, и, кстати сказать, очень полезный. В разделе "Для студентов" был задан воопрос:


 цитата:
Здравствуйте!
Хочу разобраться со строчкой на C: *ptr++=0;
На одном из ресурсов дается следующее объяснение:

"Присвоить значение 0* переменной, на которую указывает ptr, затем увеличить значение указателя ptr так, чтобы он указывал на следующую переменную того же типа."

Не могу понять принцип работы этой операции. Объясните, кому не трудно и кто знает! Спасибо!



Теперь посмотрим, какие комментарии следуют в ответ на этот вопрос.


 цитата:
Я хоть и не знаток Си, но по описанию всё становится понятно. По-сути тут два действия:
1. присвоение текущему элементу массива (ссылка на этот элемент *ptr) значения "0"
2. увеличение указателя - т.е. указатель указывает не на текущий элемент массива, а на следующий. От типа переменных в массиве зависит на сколько увеличится указатель.

.

Ответ неверный! Итак, с чем уйдет человек, задавший вопрос? Совершенно с неверными представлениями! Лично я бы не хотел, чтобы в ответ на свои вопросы я получал неверные сведения! А вы сами, хотите этого?!

Поэтому я посчитал нужным вмешаться.


 цитата:
Нет, это неправильное объяснение.
Важно знать порядок вычисления выражений и приоритет операторов.

Для указанного вами выражения *ptr++=0; порядок вычисления следующий:
1) выполняется оператор ++
2) разыменовывается указатель с помощью оператора *
3) выполняется присваивание разыменованноку указателю значения 0 с помощью оператора =

Но этого недостаточно, чтобы понять, что в конечном итоге получится. Нужно еще знать, что является рузультатом выполнения каждой операции.
Результатом выполнения постинкриментного оператора ++ является значение его операнда до применения к нему инкримента. То есть значением является копия исходного значения. Причем полученное значение является rvalue , то есть значение, которое нельзя изменять. Чтобы было понятно, то, допустим, есть выражение x++++;. Это выражение можно представить как ( x++ )++.Сначала должно выполниться операция x++. Но так как полученное значение является rvalue и его менять нельзя, то в итоге получим ошибку компиляции. Такую же ошибку компиляции мы получим и для выражения ++x++;, так как сначала выполняется постинкримент, в результате которого получается rvalue, которое нельзя изменять. Но если вы напишите так ( ++x )++;, то компилятор скомпилирует этот код, так как значением прединкримента является lvalue, то есть значение, которое можно менять.

Теперь полученная копия исходного значения ptr разыменовывается с помощью оператора *, и этому разыменованному значению присваивается 0.

В этом объяснении термины rvalue и lvalue происходят от условного обозначения операндов в выражении присваивания:

lvalue= rvalue;

Например, x = 2;. Здесь x - это lvalue, то есть переменная, задающая область памяьти, которой можно присвоить значение, а 2 - это rvalue, ей значение нельзя присвоить.



Но после начинается самое интересное! Меня пытается "опровергнуть" участник форума, который сам имеет совершенно неверные представления!


 цитата:
Вот как раз вы и не понимаете приоритеты операций
У операции разыменования самый высокий приоритет. Потом выполняется присвоение, а уж потом инкремент.


Цитата:
Не могу понять принцип работы этой операции. Объясните, кому не трудно и кто знает! Спасибо!

Всю последовательность можно написать так:

Код:

*ptr = 0;
ptr++;
Получается что мы в ячейку, на которую ссылается указатель записываем ноль. А потом просто переходим к следующей ячейке памяти в оперативе.



Но на "помощь" мне приходит другой участник форума!


 цитата:
Нет, у оператора разыменования и инкремента одинаковый приоритет, но выполнения происходит в порядке справа на лево. Потому сначала происходит инкремент (важно заметить, что он постфиксный), а затем уже разыменование.


Цитата:
Сообщение от MooNDeaR
Всю последовательность можно написать так:

Код:

*ptr = 0;
ptr++;


Выглядит это примерно так:

Код:

char* old = ptr;
ptr += 1;
*old = 0;



На самом деле оба эти процитированных высказывания являются неправильными! К сожалению я уже не успел разъяснить, почему оба эти высказывания некорректные. так как меня забанил идиот модератор.
Так с чем теперь уйдет с этого форума автор вопроса, с какими знаниями в голове?!Ему же оказали медвежью услугу и дали неверный ответ!

Разве в этом заключается смысл любых форумов, чтобы давать людям ложную информацию?!

Лично я так не считаю. Ценность любого форума как раз состоит в том, что на них есть специалисты, которые могут предоставить достоверную информацию, а не свои фантазии.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:49. Заголовок: давай и я тебе приме..


давай и я тебе пример твоего "ответа" приведу


 цитата:

Можете подсказать компилятор С++ (Последний Visual глючит, как и Builder 2010)
Если сможете-дайте рабочую ссылку


что я вижу, прочитав это сообщение? что человек абсолютно не разбирается в сабже, винит во всем компиляторы и не умеет пользоваться поиском. видно, что раньше он программированием не занимался. да и как пользователь пк слабоват. я бы мог расписать, что он заблуждается, что скорей всего с компиляторами все в порядке, что проблемы либо с кодом, либо повреждение каких-либо файлов среды. почему я не стал этого делать? потому что таких вопросов МИЛЛИАРД, любой более менее подкованный студент сможет ответить на этот вопрос. да, может его ответ будет неточным, неполным, но таково обучение. нельзя взять и разом за 1 раз научиться все делать правильно. со временем ты осознаешь свои старые ошибки, закрываешь пробелы в образовании и тд.

что же ответил ему ты:

 цитата:

Может быть надо не компилятор обвинять, а внимательно посмотреть тот код, который вы пишите. У MS VC++ 2010 етественно есть немало багов. Но я не думаю, что вы именно с ними столкнулись, потому что профессионалы не теряются от того, что у компилятора есть баги, и не меняют каждый раз компилятор после того, как у них не скомпилировалась программа. Более того вы можете сообщить Майкрософт, что вы в их компиляторе обнаружили баг. Вы тем самым окажите большую услугу другим програиммистам, которые пользуются этим компилятором.
А пока то, что вы пишите, больше похоже на дилетанство.




 цитата:

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


ты сравниваешь его с профессионалом??? are you insane??? как вообще можно было такое предположить, исходя из его поста?


 цитата:

Более того вы можете сообщить Майкрософт, что вы в их компиляторе обнаружили баг


откуда такой человек может распознать баг компилятора? как такой человек может адекватно описать техподдержке майкрософта какую-либо нештатную ситуацию?


 цитата:

А пока то, что вы пишите, больше похоже на дилетанство.


да ты прям Captain Obvious. обозвал новичка дилетантом. и так понятно, что он дилетант. И он сам знает это. да, действительно, на форумы приходят разные люди, в том числе и такие, не умеющие корректно поставить вопрос. ну ты же не можешь пройти мимо таких кадров, надо обязательно ткнуть их в свое дерьмо. за что и получил ВПОЛНЕ ЗАСЛУЖЕННОЕ предупреждение.





 цитата:

Но после начинается самое интересное! Меня пытается "опровергнуть" участник форума, который сам имеет совершенно неверные представления!


А ЧЕГО ТЫ ОЖИДАЛ ОТ ФОРУМА, ГДЕ БОЛЬШИНСТВО НОВИЧКОВ??? Естественно столкнешься с недопониманием. Естественно найдутся личности, у которых свое (возможно, неверное) мнение на этот счет. Ты же с ПЕНОЙ У РТА доказываешь им, где они не правы и обвиняешь в дилетанстве)

я уже молчу о том, что большинство твоих "ответов" - глубокое знание языка. новичкам не нужны глубокие знания) им нужно, чтобы "работало". понятие, как это работает, приходит с опытом. почему бы не приложить свои усилия к помощи более подкованным людям, если есть желание, якобы, нести просвещение?

Спасибо: 0 
Цитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:51. Заголовок: Пришел ответ от Майк..


Пришел ответ от Майкрософт на мое сообщение о баге.


 цитата:
Thank you for reporting this issue to Microsoft. We're glad to say that it's already been fixed and the fix will be available in the next release of the compiler. Tanveer Gani Visual C++ Team



Как я понимаю, под следующим релизом компилятора в Майкрософт скорей всего имеют в виду MS VC++ 2011, до которого они уже предлагают пользователям обновить свои ранее приобретенные компиляторы.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:52. Заголовок: pproger пишет: А по..


pproger пишет:

 цитата:
А пока то, что вы пишите, больше похоже на дилетанство.

да ты прям Captain Obvious. обозвал новичка дилетантом. и так понятно, что он дилетант



Я не называл человека дилетантом. Я говорил о том, что то, как он представил вопрос, описание своей проблемы выглядет как дилетанство. От автора вопроса никто не ждет высокой квалификации, а ждут лишь конкретики, то есть более детального описания проблемы некомпиляции, как автор пишет, его элементарной программы, а не общих фраз.

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

И также обратите внимание, что если бы я выступал на том форуме, в подобном духе, как вы здесь, то меня моментально бы забанили. Как говорится почувствуйте разницу!


Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:53. Заголовок: ты видимо не догнал,..


ты видимо не догнал, что мне плевать, забанят меня тут или нет. не удивительно.
все что хотел - я сказал. можешь дальше сам с собой вести беседу на этом ресурсе :)

Спасибо: 0 
Цитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:54. Заголовок: Я решил прокомментир..


Я решил прокомментировать процитированных здесь два неверных заключения о порядке вычисления выражения *ptr++ = 0; А то забредет случайно в эту тему начинающий программист и так и не поймет, почему они неверные. Похоже моего первого объяснения было недостаточно, раз после него последовали различные "опровержения" и "обоснования".

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



 цитата:
Вот как раз вы и не понимаете приоритеты операций
У операции разыменования самый высокий приоритет. Потом выполняется присвоение, а уж потом инкремент.

Цитата:
Не могу понять принцип работы этой операции. Объясните, кому не трудно и кто знает! Спасибо!

Всю последовательность можно написать так:

Код:

*ptr = 0;
ptr++;
Получается что мы в ячейку, на которую ссылается указатель записываем ноль. А потом просто переходим к следующей ячейке памяти в оперативе.


.

В этом неверном утверждении сразу же бросается в глаза, что автор ставит приоритет операции присваивания выше, чем постфиксного инкримента. Если упростить исходную конструкцию, то согласно автору утверждения в следующем фрагменте кода

int x = 1; 
x++ = 2;


сначала выполнится присваивание, то есть переменная x получит значение 2, а затем это значение будет инкриментировано.
Но если бы автор этого утверждения попробывал скомпилировать этот код, то получил бы ошибку компиляции! Переменной x ничего не присваивается. А сначала выполняется постинкримент, получается rvalue, котормоу нельзят присваивать значение, и об этом сообщит компилятор в своем сообщении об ошибке.
Есть еще один наглядный способ показать неверность утверждения автора. Если он считает, что разыменование происходит раньше инкримента, то если поставить скобки согласно данному приоритету операций, то очевидно они помешать не могут. Итак, вернемся к исходному выражению *ptr++ = 0; и перепишем его в виду ( *ptr )++ = 0;/ Но оказывается и это выражение не скомпилируется! так как предположение автора о приоритете операций неверное. В этом случае действительно выполнится сначала разыменование, как предполагал автор утверждения. Но только не потому, что приоритет разыменования выше, чем у инкримента, а потому что поставлены круглые скобки. Затем разыменованное выражение будет инкриментировано, и опять в результате получится rvalue, которому нельзя присвоить значение. Значит получаем ошибку компиляции.

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


 цитата:
Нет, у оператора разыменования и инкремента одинаковый приоритет, но выполнения происходит в порядке справа на лево. Потому сначала происходит инкремент (важно заметить, что он постфиксный), а затем уже разыменование.


Цитата:
Сообщение от MooNDeaR
Всю последовательность можно написать так:

Код:

*ptr = 0;
ptr++;


Выглядит это примерно так:

Код:

char* old = ptr;
ptr += 1;
*old = 0;



В чем ошибочность этого утверждения? Причина такая же, как и у первого атора: незнание приоритетов операторов, и что является результатом вычисления выражения операции.

На самом деле постинкримент относится к постфиксным операторам, а разыменование относится к унарным операторам, приоритет которых ниже, чем постфиксных операторов. То есть автор этого ошибочного утверждения не знает, что постфиксный инкримент и префиксный инкримент (префиксный инкримент относится к той же категории операторов, что и разыменование) относятся к разным категориям операторов и имеют разный приоритет. В этом легко убедиться, если рассмотреть следующий фрагмент кода

int x = 1; 
++x++;


Если бы у префиксного инкримента, как и у разыменования, приоритет был выше или равен приоритету постфиксного инкримента, то код успешно бы компилировался, так как префиксный оператор инкримента возвращает ссылку на исходный операнд, то есть lvalue, к которой можно было бы затем применить постфиксный инкримент. но, увы, этот код не будет компилироваться. так как предположения автора неверные.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 28.07.12 18:55. Заголовок: Если кому-то мой ком..


Если кому-то мой комментарий к порядку вычисления выражения *ptr++ = 0: покажется излишним и не актуальным, так как всем этот порядок давно очевиден, то он глубоко заблуждается! Страсти и маразм на том отстойном форуме, откуда квалифицированных программистов выпроваживают, накаляются!
Вот, например, очередное толковоание, как вычисляется это выражение, очередного самопровозглашенного местного профессионала с ником SmittWesson:

Цитата: 
Нет, у оператора разыменования и инкремента одинаковый приоритет,

Нет операций с одинаковым приоритетом. Иначе задачка про Буриданова осла получится. Если приоритеты равны, как их выбирать? Рандомно?
Прав MooNDeaR. Именно в этом порядке.
Разыменование, присвоение и постфиксный ++.


Аргументы, приведенные в этой цитате довольно веские: " Нет операций с одинаковым приоритетом. Иначе задачка про Буриданова осла получится."!
А какой следующий замечательный довод: "Если приоритеты равны, как их выбирать? Рандомно?"

Тут не до стандарта С/С++! Тут более высокие материи! Как бы не получилась задачка про Буриданова осла! Вот чего надо бояться!
То, что, например, арифметические операторы + (плюс) и - (минус) имеют одинаковый приоритет, это, естественно, "профессионалу" в голову не приходило. Ведь так и голову можно сломать, решая, как выбрать одну из них! Рандомно, что ли?

У кого есть желание поднять себе настроение и убедиться, что это не мои выдумки, и это не я назвал автора процитированного комментария профессионалом, чтобы поглумиться над ним, а именно он сам себя так позиционирует в своем профиле, можете обратиться к первоисточнику по ссылке

На этом форуме модераторы отличаются от подобных "профессионалов" лишь в одном: если ты посмеешь возразить им в отношении их высказываний по С/С++, то тебя, не церемонясь, забанят!

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 3
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет