Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
#1

Создать оператор, наподобии if или while - C++

27.08.2013, 23:53. Просмотров 937. Ответов 14
Метки нет (Все метки)

Могу ли я, пользуясь встроенными средствами C++ (ну или какой-нибудь библиотекой) создать собственный оператор, умеющий работать с блоками кода? То есть написать оператор, выглядящий как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
mycodeblockoperator(a==b)
{
 
}
on
{
 
} 
off
{
 
}
Или же это придется делать при помощи макросов? Если при помощи макросов - подскажите как, я туплю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 23:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать оператор, наподобии if или while (C++):

Как создать виртуальный поток и переопределить оператор <<? - C++
Виртуальный то есть имеется ввиду не файловый и не строковый и не консольный. Впрочем, создание сего не противоречит синтаксису. Вот,...

Окна наподобии Ccleaner - C++ WinAPI
Здравствуйте! Подскажите, пожалуйста, что за контрол или окно, или область находится с правой стороны (При нажатии на кнопки слева, с права...

Стиль ListBox-a (WinApi), а также возможность реалиации в программе чего-то наподобии дерева папок - C++ WinAPI
Хотелось бы знать, есть ли возможность задать ListBox-y стиль как на картинке Интересует только, как можно задать такие рамки...

Подскажите, нужно перегрузить оператор или создать метод(если создать то не понимаю как) записи в файл - C++
вот как я хотел сделать запись в файл перегрузкой #pragma once #include &quot;iostream&quot; #include &quot;conio.h&quot; #include &quot;fstream&quot; class...

Оператор ИЛИ - C++
Программа должна проверять строку на правильность ввода(строка состоит из последовательностей нолей и единиц разделённых пробелами) ...

Логический оператор ИЛИ - C++
Всем привет,на днях преподаватель задал интересный вопрос: &quot;Почему в С++ для оператора ИЛИ используют &quot;|| &quot;,а не &quot;|&quot;...

14
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,274
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 12:29 #2
как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
#define mycodeblockoperator(a) if(a) goto on_; else goto off_;
#define on on_: if(true)
#define off  else off_:
 
int main()
{
    int a = 4;
    int b = 5;
  
    mycodeblockoperator(a == b)
    {
        // непонятно, что должно быть тут
    }
    on
    {
        std::cout << "on" << std::endl;
    } 
    off
    {
        std::cout << "off" << std::endl;
    }
}
1
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 12:42  [ТС] #3
Цитата Сообщение от Kastaneda Посмотреть сообщение
как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
#define mycodeblockoperator(a) if(a) goto on_; else goto off_;
#define on on_: if(true)
#define off  else off_:
 
int main()
{
    int a = 4;
    int b = 5;
  
    mycodeblockoperator(a == b)
    {
        // непонятно, что должно быть тут
    }
    on
    {
        std::cout << "on" << std::endl;
    } 
    off
    {
        std::cout << "off" << std::endl;
    }
}
Спасибо!

Не по теме:

Я реализую тернарную логику для C++, и мне нужно сделать новый if.

0
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,274
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 12:51 #4
Цитата Сообщение от ComputerMouse Посмотреть сообщение
Я реализую тернарную логику для C++
Так есть же тернарный оператор. Или нужно что-то типа фортрановского
Fortran
1
if (a) 10, 20, 30
которое развернется в
C++
1
2
3
if (a < 0) goto 10;
if (a == 0) goto 20;
if (a > 0) goto 30;
?
0
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:05  [ТС] #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Так есть же тернарный оператор. Или нужно что-то типа фортрановского
Fortran
1
if (a) 10, 20, 30
которое развернется в
C++
1
2
3
if (a < 0) goto 10;
if (a == 0) goto 20;
if (a > 0) goto 30;
?
Я имею в виду базовую логику. То есть делаю так, чтобы программа была построена не на true и false, а на true, false и dontknow. Это дает много полезных плюшек.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.08.2013, 13:05 #6
ComputerMouse, boost::tribool же. Переделка if для этого не нужна как бэ.
0
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:39  [ТС] #7
Цитата Сообщение от ForEveR Посмотреть сообщение
ComputerMouse, boost::tribool же. Переделка if для этого не нужна как бэ.
То есть как не нужна? Я подаю в if тернарное значение, нормальный if с этим работать не будет => нужен свой if с синтаксисом
C++
1
2
3
4
5
6
7
8
if(a)
{
 
} else {
 
} dontknow {
 
}
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.08.2013, 13:43 #8
ComputerMouse, Посмотрите на tribool. Через макросы это делать глупо.
0
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:46  [ТС] #9
Предположим у нас есть тернарное выражение:
C++
1
(a && !b) || (a && b) || (!b && a)
Его по человечески, не имея варианта dontknow не оформишь. А что если их несколько?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.08.2013, 13:49 #10
ComputerMouse, В boost::tribool есть undeterminate. Может посмотрите на ссылку то все же?
0
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 13:52  [ТС] #11
Я посмотрел на ссылку. Я имею в виду варианта dontknow в if. Реализация, которая там:
C++
1
2
3
4
5
6
7
8
9
10
11
12
if (a)
{
 
}
else if (!a)
{
 
}
else
{
 
}
менее удобная чем
C++
1
2
3
4
5
6
7
8
9
10
11
12
if
{
 
}
else
{
 
}
dontknow
{
 
}
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.08.2013, 13:55 #12
ComputerMouse, Ну конечно же... Макросы это ведь так удобно.
C++
1
2
3
4
5
6
7
8
9
if (a)
{
}
else if (undeterminate(a))
{
}
else
{
}
Чем неудобно? Если так уж хочется dontknow там есть специальный макрос, который может ввести данное ключевое слово как синоним undeterminate.
0
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 14:01  [ТС] #13
Мне неважно слово, которым обозначается неизвестное значение, я говорю про удобство другого синтаксиса оператора if для тернарной логики, вот и все.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
29.08.2013, 14:05 #14
ComputerMouse, Гвозди тоже можно отверткой заколачивать... Как знаете. То, что вы хотите возможно только с помощью макросов... Переопределять if - идея крайне плохая.
0
ComputerMouse
6 / 6 / 3
Регистрация: 06.11.2012
Сообщений: 254
29.08.2013, 14:08  [ТС] #15
Я намерен оставить обе возможности, чтобы каждый работал с тем синтаксисом, который ему удобен. И это, кстати, моя последняя задача, я уже саму логику, операторы и т.д. сделал.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 14:08
Привет! Вот еще темы с ответами:

оператор pow, или почему он не работает?! - C++
Задание: Дано целое число N и набор из N вещественных чисел: А1, А2,...,AN Вывести следующие числа: A1, (A2)^2,...,(A(n-1))^N-1,AN^N ...

Создать окно наподобии кнопки пуск с приложениями - C#
Всем привет, идея впринцепи понятна, создать окно наподобии кнопки пуск с приложениями, но не могу понять как реализовать это.

Новая сущность наподобии бандла. (Symfony 2) - PHP
Для написании динамической системы, потребовалось ввести новую сущность - «Модуль». В отличие от бандла, проект на момент запуска незнает с...

Внедрить свой код на сайт наподобии vksave - JavaScript
Быть может вопрос не в ту тему, но все-же. Как реализована программа vksaver ???? Как мне сделать так, что-бы установить...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
29.08.2013, 14:08
Ответ Создать тему
Опции темы

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