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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
sardinka
0 / 0 / 0
Регистрация: 13.12.2007
Сообщений: 87
#1

Линия кода 'S':'C' - C++

11.03.2008, 22:04. Просмотров 1075. Ответов 11
Метки нет (Все метки)

cho delaet vtorya polovina coda etoi lini (posle ?):
(strcmp(prokey1,'No Provider')==0) ? 'S':'C'
ili she
(strcmp(prokey1,'No Provider')==0) ? 'S':account_no
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2008, 22:04     Линия кода 'S':'C'
Посмотрите здесь:

Побочная линия - C++
Здаров! http://informatics.mccme.ru/mod/statements/view3.php?id=282&chapterid=354#1 Помогите с задачей плиз! int n; int j; ...

Класс линия - C++
Задание: описать класс линии, в котором конструктор ещё и рисует её. (это сделано). Доп. задание: сделать деструктор. вопрос: как? просто...

Прямая линия на плоскости - C++
Помогите пожалуйста составить класс «Прямая линия на плоскости» на языке C++.

Ломаная линия (тема Файлы) - C++
Дан файл действительных чисел. Первые числа задают координаты начала ломаной линии, каждая следующая пара чисел соответствует длине...

Наибольшая средняя линия треугольника - C++
Составить программу, которая вычисляет наибольшую среднюю линию треугольника с заданными координатами вершин...

Выяснить, является ли линия уникурсальной - C++
Не могу прогу написать с рекурсией, чтоб правильно функционировало (с возвратом значения). Дайте хотя бы ссылку,где похожее найти. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VVP
Сообщений: n/a
12.03.2008, 12:13     Линия кода 'S':'C' #2
Уважаемая Сардинка, это даже не смешно :-( Читайте хелпу, ну или книжку по C++.

А вообще эта запись эквивалентна:
Код
if(strcmp(prokey1,'No Provider')) some_var='S'; else some_var='C';
Запись <expression> ? <result if TRUE> : <result if FALSE>, это КОНСТРУКЦИЯ языка.

Лучше таких вопросов не пишите, помните первый принцип тех.поддержки: если пользователь не прочитал руководство, то отправить его читать руководство.
Snork
Сообщений: n/a
12.03.2008, 12:23     Линия кода 'S':'C' #3
>А вообще эта запись эквивалентна:
if(strcmp(prokey1,'No Provider')) some_var='S'; else some_var='C';

Не совсем так. Скорее

inline TYPE F(BOOL b, TYPE p1, TYPE p2)
{
if (b) return p1; else return p2;
}

Тогда

MessageBox(a < 5? '11' : '22');

разворачивается

в

inline LPCTSTR F(BOOL b, LPCTSTR p1, LPCTSTR p2)
{
if (b) return p1; else return p2;
}

MessageBox(F((a < 5), '11', '22')).

А вообще-то я не уверен, что этот код подставляемый. Может есть какая-нибудь стандартная F. Лучше спросить у разработчиков компиляторов.
VVP
Сообщений: n/a
12.03.2008, 12:42     Линия кода 'S':'C' #4
В свое время на BorlandC++ 3.1 специально проверял конструкцию ?:, вместе с if ... else, получился одинаковый ассемблерный код. Чего сейчас творится у компиляторов я не знаю.
Snork
Сообщений: n/a
12.03.2008, 16:50     Линия кода 'S':'C' #5
Будьте так добры, киньте примерчики. (Один - с ?:, второй с if-else).
Snork
Сообщений: n/a
12.03.2008, 16:55     Линия кода 'S':'C' #6
Если я вас правильно понял, то мой пример должен развернуться в
Код
if (a<5)
   MessageBox('11');
else
   MessageBox('22');
Так?

Будет время - посмотрю, что с этим всем делает MSVC++ и напишу.
VVP
Сообщений: n/a
12.03.2008, 17:09     Линия кода 'S':'C' #7
Да вы поняли правильно...
VVP
Сообщений: n/a
12.03.2008, 17:27     Линия кода 'S':'C' #8
Хотя нет, сейчас пересмотрел ваш пример, вообщем:

1.
Если записать
Код
  a<5?MessageBox('11'):MessageBox('22')
, то тогда ассеблерный код генерится аналогичным тому if-у, что вы написали.

2.
Если записать так как писали вы
Код
  MessageBox(a<5?'11':'22')
, то ассемблерный код будет отражать примерно следущее:
сначала вычислится значение временного результата '11' или '22',
потом временный результат будет передан в стек,
потом один раз будет вызвана MessageBox.
Snork
Сообщений: n/a
12.03.2008, 18:43     Линия кода 'S':'C' #9
То есть примерно то, что я написал вначале?
Snork
Сообщений: n/a
20.03.2008, 13:24     Линия кода 'S':'C' #10
Вот так и уходят от ответа...

Ни примеров, ни отклика.
VVP
Сообщений: n/a
20.03.2008, 13:43     Линия кода 'S':'C' #11
Ну от ответов я положим не ухожу, не надо передергивать. Это во-первых.
Во-вторых конструкция (? - это конструкция языка программирования С/С++!!! В какой inline и чего там разворачивается нам знать НЕ ВАЖНО, это приоритет компилятора, я лишь сделал предположение на основании анализа ассемблерного кода, который проводил очень давно, в период расцвета Borland C++ 3.1.
Ну и последнее использование этой конструкции эчень разнообразно, она может быть и l-value и r-value, например как вам такое:
Код
(a>5?x:y)=(b<18?p:k);
А, понравилось? И каким inline вы собираетесь это подменять?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2008, 14:38     Линия кода 'S':'C'
Еще ссылки по теме:

Определить, имеет ли ломаная линия самопересечения - C++
Даны действительные числа х1,у1, х2,у2, хn,уn. Известно, что все они различны. Рассматривается ломанная, которая соединяет эти точки....

Реализовать иерархию классов Точка-Линия-Круг - C++
Реализовать иерархию классов из индивидуального задания. В каждом производном классе присутствует - конструктор инициализации, методы...

Определение условия при котором линия не будет проходить через область - C++
Дана область определить при каком условии расположении точки, прямая которая проходит через нее не будет затрагивать 1 и 2 области!!!!!

Задача из Bjarne Stroustrup (Глава 12,7 №2)Графическая линия в консоли(в стиле ASCII) - C++
Глава 12,7 №2. Implement a simple graphics system using whatever graphics facilities are available on your system (if you don’t have a...


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

Или воспользуйтесь поиском по форуму:
Snork
Сообщений: n/a
20.03.2008, 14:38     Линия кода 'S':'C' #12
Вы меня убедили. Не подменить никак.

Но и этой конструкции наш изначальный пример НЕ эквивалентен:
if(strcmp(prokey1,'No Provider')) some_var='S'; else some_var='C';

А если нет переменной? Как с MessageBox'ом? Только это я и хотел сказать. Жаль, что не подумал о r-value и l-value - не стал бы такую несостоятельную гипотезу выдвигать.
Yandex
Объявления
20.03.2008, 14:38     Линия кода 'S':'C'
Ответ Создать тему
Опции темы

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