Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
32 / 32 / 1
Регистрация: 23.07.2009
Сообщений: 170
1

Хитрый комментарий

29.10.2014, 19:27. Просмотров 1006. Ответов 7
Метки нет (Все метки)


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

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

Поэтому попытаюсь описать суть задачки может кто-то знает этот прикол.

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

Эту задачку я увидел в какойто книжке по с++ для начинающих
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2014, 19:27
Ответы с готовыми решениями:

Хитрый fstream
Привет всем! Вот есть код, казалось бы без ошибок... #include <windows.h> #include <fstream>...

Хитрый обход дерева в глубину
По условию необходимо обойти дерево так чтобы найти путь max длины не имеющий кратных вершин,...

Самый хитрый код (Несерьезная тема)
Вот, собственно нашел в интернете код #include <cstdio> double m= {7709179928849219.0, 771};...

На Дваче анон поднял хитрый пример на тему ++i, растолкуйте мне, гики, а то я так ничего и не понял
Цитирую...

7
2712 / 1879 / 556
Регистрация: 05.06.2014
Сообщений: 5,453
29.10.2014, 20:04 2
\ в конце комментария?
1
96 / 98 / 30
Регистрация: 21.10.2012
Сообщений: 320
29.10.2014, 20:15 3
Скорее всего связано с

C++
1
2
#define \
        \
1
Jesus loves me
Эксперт С++
5162 / 3131 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
29.10.2014, 21:59 4
Лучший ответ Сообщение было отмечено Quadro9 как решение

Решение

Думаю дело было в триграфах
C++
1
2
3
4
5
6
7
8
%:include <iostream>
 
int main()
<%
  std::cout << "Hello, World 1" << std::endl; // Will the next line be executed?????????/
  std::cout << "Hello, World 2" << std::endl;
  std::cout << "Hello, World 3" << std::endl;
%>
для gcc нужен ключ -trigraphs
1
Эксперт С++
4967 / 3074 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
29.10.2014, 22:01 5
Kastaneda, это диграфы, или просто альтернативные токены. Триграфы это:
C++
1
2
3
4
5
6
7
8
9
??=   ---   #
??(   ---   [
??<   ---   {
??/   ---   \
??)   ---   ]
??>   ---   }
??’   ---   ^
??!   ---   |
??-   ---   ~
1
С чаем беда...
Эксперт CЭксперт С++
8525 / 4243 / 1173
Регистрация: 18.10.2014
Сообщений: 9,209
29.10.2014, 22:04 6
Цитата Сообщение от castaway Посмотреть сообщение
Kastaneda, это диграфы,
Диграфы диграфами, но вся соль именно в последовательности ??/ в конце комментария. А это, как вы сами заметили, именно триграф.
0
Jesus loves me
Эксперт С++
5162 / 3131 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
29.10.2014, 22:05 7
castaway, i know, диграфы gcc поддерживает без ключей, а для триграфа как раз и нужен -trigraphs
В моем примере есть один триграф, про который ТС похоже и спрашивает.

А диграфы я в код "для загадочности" влепил
0
Эксперт С++
4967 / 3074 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
29.10.2014, 22:11 8
TheCalligrapher, Kastaneda, не сразу его заметил.

Добавлено через 4 минуты
Цитата Сообщение от Quadro9 Посмотреть сообщение
но содержала интересный хак
Если суть в ди\три-графах, то это уже не хак.
+ Админ не обязан знать какой-либо язык на уровне профессионала, его обязанность - администрирование форума\раздела.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2014, 22:11

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

Комментарий к коду
Ребят,помогите кто нибудь вот программа: #include &lt;iostream&gt; using namespace std; void main() {...

Написать комментарий
Суть такая. Для произвольной строки заменить на РОВ первое вхождение С. #include &lt;iostream&gt;...

комментарий кода
Здравствуйте! имеется часть когда на СИ из какого то обработчика PLC, подскажите каким образом...

комментарий к проге
помогите прокоментировать программу #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace...

Интерполяция функции по формулам Ньютона. "Хитрый" алгоритм
Доброго времени суток, мастера! Пара вопросов для разогрева: cout.precision(14); cout &lt;&lt;...

нужен комментарий к программе
Поменять местам первую и последнюю букву последнего слова строки #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.